在下面的例子中,有人可以解释为什么识别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
});
答案 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
这是本地/全局变量的问题..请详细了解它们之间的差异..它们存在于每种编程语言中