function x() {
if(true) {
var y = "hello world";
}
alert(y);
}
x()
alert(y)
當我運行這段代碼時,它會提醒兩次「Hello world」。局部變量仍然可以訪問該函數嗎?
我閱讀關於範圍的教程,並且他們不應該可以通過第二個提示訪問y
。
爲什麼它是可訪問的?提前致謝!!
function x() {
if(true) {
var y = "hello world";
}
alert(y);
}
x()
alert(y)
當我運行這段代碼時,它會提醒兩次「Hello world」。局部變量仍然可以訪問該函數嗎?
我閱讀關於範圍的教程,並且他們不應該可以通過第二個提示訪問y
。
爲什麼它是可訪問的?提前致謝!!
變量y不應該在函數之外訪問。當我測試它時,它無法訪問。
您可能實際上已經在全局範圍的某個地方定義了變量y,這可能是什麼被警告。
JavaScript中的局部變量只能在本地範圍內訪問,而全局變量(在函數外部定義的變量)可以在任何地方訪問,即使在函數內部也是如此。
在你的情況,我懷疑可能有另一個「y」變量定義在全球範圍內的某處。
你也確定你沒有運行你的腳本兩次嗎?在這種情況下,您可能會從兩次調用x()函數兩次獲取警報。
另一個原因是,您的頁面上可能會運行另一個腳本,其全局範圍中定義了ay變量,並且當它與此腳本結合時,它會提醒在全局範圍內定義的y變量其他腳本。
不是。你確定你沒有在函數之外定義'y'嗎? – Blackhole
當我運行你的代碼時,我得到了一個警告與你好世界:http://jsfiddle.net/Q9eFU/應該有另一個y定義以外的x()範圍 –
我剛剛嘗試過。它只顯示一條警報 –