2013-07-03 51 views
0

在下面的例子中,有人可以解釋爲什麼var1被識別,而var2不是? 爲什麼第一個和第二個被視爲不同的作用域,如果它們指向同一DOM元素上的同一個事件?

$(document).ready(function() { 

    var1 = 12;  // no var =global 
    var var2 = 24; // local 
}); 

$(document).ready(function() { 

    console.log(var1); // = 12 
    console.log(var2); // fail 

}); 

回答

3

這就是JavaScript的工作原理。

沒有var,它始終屬性分配。隱含的對象是window

它與事件無關 - 它是DOM的一部分,但不是與JavaScript相關的語言。

+0

我確定有var。的使用我對什麼被認爲是不同的範圍更感興趣。不要將這兩個函數合併到一起,因爲它們引用同一個DOM元素上的相同事件? – Abe

+0

@Abe Nope。它們是兩個不同的功能,只是綁定到同一個事件。 JavaScript(語言,不是jQuery,不是DOM)不知道DOM事件是什麼)。我答案的最後一句話就是這個區別。 – alex

0

由於您已使用var var2來聲明var2它被視爲局部變量,其中var1被認爲是在全局範圍內聲明的。

由於JavaScript有功能範圍,功能範圍內聲明的任何變量將只在它

0

VAR2在不同的考慮範圍之內使用,因爲它是本地的一個比它是從另一個叫功能,它與.ready事件沒有任何關係。如:

(function(){ 
    var v = 1; 
})(); 
//v outside that function is undefined. if you try to call it, it will return an undefined error 

是局部/全局變量的問題..請閱讀更多關於它們之間的區別..他們在每一個編程語言存在

jsfiddle

相關問題