JavaScript中的函数作用域

JavaScript中的函数作用域,javascript,scope,Javascript,Scope,在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 scope

在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应该是全局变量。。但这种情况并没有发生。甚至我也试着在警报之前调用。。。这是小提琴。请帮助我更好地理解范围

根据我在第一段代码中的理解,b和c应该是全局变量

它们是,但在调用a之前,以及在c的情况下调用b之前,它们不会被赋值

这是小提琴

代码是不同的。有VarB,它使b成为局部变量而不是全局变量

根据我在第一段代码中的理解,b和c应该是全局变量

它们是,但在调用a之前,以及在c的情况下调用b之前,它们不会被赋值

这是小提琴

代码是不同的。有VarB,它使b成为局部变量而不是全局变量


Google是下面的关键词,它是掌握作用域和其他javascript模式技术的好地方。这是一个由12部分组成的系列文章。网站上没有直接链接,因此您需要使用零件号搜索其余文章

search for elegant code basic javascript part 1 elegant code basic javascript part 2 etc...
Google是下面的关键词,它是掌握作用域和其他javascript模式技术的好地方。这是一个由12部分组成的系列文章。网站上没有直接链接,因此您需要使用零件号搜索其余文章

search for elegant code basic javascript part 1 elegant code basic javascript part 2 etc...
请看小提琴。在这种情况下。b也成为全局变量,对吗?不,因为您声明了var b,它是包含块的本地变量,在本例中,是分配给var a的函数。JavaScript没有块范围。var使事物在包含它们的最接近的函数中是局部的,而这个函数仍然是分配给a的。@Quentin c的最接近的函数是a或b?a=函数{b=函数{c=…哪个看起来更接近?请看小提琴。在本例中.b也成为全局变量,对吗?不,因为您声明了var b,它是包含块的局部变量,在本例中是分配给var a的函数。JavaScript没有块作用域。var使事物成为包含它们的最近函数的局部变量,该函数仍然是全局变量一个分配给a.@Quentin最接近c的函数是a或b?a=函数{b=函数{c=…哪个看起来更接近?