我需要了解關於Javascript中範圍問題的一些信息。我知道它支持詞法(靜態)範圍確定,但是,它不支持動態範圍確定嗎? 如果你知道關於Javascript的範圍界定方面的任何事情,你可以和我分享一下嗎?Javascript中的範圍界定問題
感謝
我需要了解關於Javascript中範圍問題的一些信息。我知道它支持詞法(靜態)範圍確定,但是,它不支持動態範圍確定嗎? 如果你知道關於Javascript的範圍界定方面的任何事情,你可以和我分享一下嗎?Javascript中的範圍界定問題
感謝
我認爲你是困惑,因爲JavaScript使用靜態範圍,但在功能層面,而不是在像往常結構語言塊級。
var foo = "old";
if (true) {var foo = "new";}
alert (foo == "new")
所以要小心,塊沒有範圍! 這就是爲什麼你有時會看到循環裏面只是功能,對變量的作用域是一個迭代裏面:
functions = [];
for(var i=0; i<10; i++) {
(function(){
var local_i = i;
functions[local_i] = function() {return local_i;}
})();
}
functions[2]() // returns 2 and not 10
至於我的理解; Javascript有兩種變量,它們是全局變量和局部變量。但是,假設我們有一個名爲x的變量,它定義爲全局變量,並且在引用x的地方範圍的靜態父級中定義。在這種情況下,x取全局變量的值。因此,全局變量比本地變量具有更高的優先級。而且,當沒有任何全局變量時,x通過靜態鏈發現聲明,這讓我認爲Javascirpt是靜態範圍的語言。
我對嗎?
否...閱讀http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Histing – w00t 2012-02-10 09:28:16