javascript范围和jquery $(文档).ready

时间:2013-07-03 02:21:49

标签: javascript jquery scope

在下面的例子中,有人可以解释为什么识别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 个答案:

答案 0 :(得分:3)

这就是JavaScript中的范围界定。

没有var,它始终是属性赋值。隐含对象是window

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

答案 1 :(得分:0)

由于您已使用var var2声明var2,因此将其视为局部变量,其中var1被视为在全局范围内声明。

由于javascript具有功能范围,因此在功能范围内声明的任何变量都只能在其中使用

答案 2 :(得分: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