在Pro JavaScript with Mootools一书中,我找到了以下行
The scoping rules for function expressions are a bit different from function
declarations because they depend on variable scoping. Remember that in
JavaScript, the var keyword defines a variable to be scoped locally, and
omitting the keyword creates a global variable instead:
根据我的理解,我已经编写了以下代码,并试图检查这个
var a = function(){
b = function(){ c = function(){ alert("b"); }; };
};
alert(typeof a); // Returned me 'function'
alert(typeof b); // Returned me 'undefined'
alert(typeof c); // Returned me 'undefined'
我也在下面尝试过
var a = function(){
var b = function(){ c = function(){ alert("b"); }; };
};
alert(typeof a); // Returned me 'function'
alert(typeof b); // Returned me 'undefined'
alert(typeof c); // Returned me 'undefined'
请你解释一下,让我更好地理解。根据我在第一块代码中的理解,b和c应该是全局变量..但在这种情况下不会发生这种情况。即使我试图在警报之前调用a()
...... Here也是小提琴。请帮助我更好地了解范围。
答案 0 :(得分:6)
根据我在第一个代码块中的理解,b和c应该是全局变量
他们是,但在调用a
之前他们不会分配给他们的值(在b
的情况下调用c
之前)。
这是小提琴
该代码不同。您有var b
,这使b
成为局部变量,而不是全局变量。
var a = function(){
b = function(){ c = function(){ alert("b"); }; };
};
a();
b();
alert(typeof a);
alert(typeof b);
alert(typeof c);
答案 1 :(得分:-1)
search for elegant code basic javascript part 1 elegant code basic javascript part 2 etc...