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

});
4

3 回答 3

3

这就是 JavaScript 中作用域的工作原理。

没有var,它总是属性分配。隐含对象是window

它与事件无关——它是 DOM 的一部分,但与 JavaScript 作为一种语言无关。

于 2013-07-03T02:23:34.913 回答
0

由于您曾经var var2声明var2它被视为局部变量,因此 var1 被视为在全局范围内声明。

由于 javascript 具有函数范围,因此在函数范围内声明的任何变量都将仅在其中可用

于 2013-07-03T02:23:59.343 回答
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

于 2013-07-03T02:30:25.260 回答