我不明白為什么var可以在函式內重新分配變數,但更改也適用于函式之外。為什么/如何?
var c = 1;
function Fn() {
c = 2;
}
Fn();
c; // 2
為什么值2不限于函式的范圍?當我在函式內撰寫時c = 2,javascript引擎是否會自動在函式外部提升一個新var c的并為其分配 value undefined,然后將其更改為2一次Fn()被呼叫?
uj5u.com熱心網友回復:
它適用于函式外部,因為在函式內部,您正在更改變數。
您沒有創建僅存在于函式內部的新變數。
為什么值 2 不限于函式的范圍?
您沒有使用var,let或const任何其他方法在函式范圍內創建變數。
您正在訪問已在更廣泛范圍內創建的變數。
當我在函式中撰寫 c = 2 時,javascript 引擎是否會自動在函式外部提升一個新的 var c 并為其分配未定義的值,然后在呼叫 Fn() 后將其更改為 2?
不,沒有新變數。只有c你已經在函式之外創建的。
uj5u.com熱心網友回復:
這是關于 javascript 的常見抱怨。由于您使用了“Var”,它具有全域范圍,因此即使您在使用時處于新函式中,c=2因為它已經在全域范圍內定義,所以它會在全域范圍內更改。使用“Let”有助于定義函式的區域變數,而“const”將全域變數定義為常量,因此它們無法更改。當您在不同的 JavaScript 檔案中有兩個同名的全域變數,然后參考這兩個檔案以在頁面上使用時,這個問題特別有趣。應謹慎使用全域變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495860.html
標籤:javascript 变量 变量
