該篇介紹什麼是變數提公升,寫給像我一樣的js新手看的
簡單來說變數提公升就是 js會把var變數的宣告自動提公升到作用域的頂部,即使你不想這樣
乙個例子: (區域性變數與全域性變數同名時 , 區域性變數覆蓋全域性變數)
var a="全域性變數";
function test()
test();
上例的兩個輸出結果是
undefined區域性變數
第乙個輸出並沒有輸出全域性變數a而是undefined ,這就是變數提公升導致的
上例等同與下例:
var a="全域性變數";
function test()
test();
test函式內即使區域性變數a還沒定義,就已經覆蓋了全域性變數,可見其宣告已經生效了,
即變數宣告會自動提公升到作用域的頂部, 即使該語句並沒執行
如下例:
var x=100;
var y=200;
function test()
return;
var y=2;
}test();
輸出結果:
undefinedundefined
等同如下形式:
var x=100;
var y=200;
function test()
return;
y=2;
}test();
那麼怎麼解決這個問題呢?
用let變數!let變數執行到定義部分才會裝載,具體用法請自行查詢!
js變數提公升
在了解變數提公升之前,應該先了解一下js到底是一種什麼型別的語言,他的執行機制又是怎樣的.console.log global undefined var global global console.log global global function fn fn 可以看出來 變數提公升只是將變數提...
js變數提公升
var a 100 functionf console.log a f undefined 200var a 100 functionf f console.log a 100如果你習慣了強型別語言的程式設計方式,那麼看到上述輸出結果你肯定會大吃一驚。我們來看一下c 的乙個例子 include us...
JS變數提公升
在當前作用域中,js 自上而下執行之前,瀏覽器首先會把所有的帶var function關鍵字的進行提前宣告 定義。注意宣告和定義的區別 宣告 declare var num 在當前作用域中吼一嗓子我有num這個名字了。定義 define num 12 把宣告的名字賦值。console.log a u...