與MooTools的書臨的JavaScript我發現下面的線功能範圍在JavaScript
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是小提琴。請幫助我更好地瞭解範圍。
請看小提琴http://jsfiddle.net/HJ4vK/5/沒有直接的聯繫。在這種情況下。 'b'也成爲全局變量吧? – Exception 2012-07-18 11:49:57
不,由於您聲明瞭'var b',它對於包含塊是本地的,在這種情況下,它是分配給'var a'的函數。 – 2012-07-18 12:02:13
JavaScript沒有塊範圍。 'var'使事物對包含它們的最接近的函數是局部的(它仍然是分配給'a'的函數)。 – Quentin 2012-07-18 12:04:03