js初學者,如果之前接觸的有其他程式語言的經驗,往往容易被js**的執行結果,感覺到莫名其妙,其實很多時候,不太了解,其中的變數提公升的原理。
如下**所示:
console.log(a);//輸出函式體
var a = 15;
function a()
console.log(a);//15
如果沒有接觸過js,肯定想不明白是怎麼回事,其實在js執行過程中,有個過程問題。先把變數的宣告提公升到作用域的最上面,然後提公升宣告型別函式(此處區別與另外一種函式的定義,函式表示式,如 var fn=function(){};),所以呢,上面的語句就改寫為:
var a;
function a()
console.log(a);
a=15;
console.log(a);
上面定義了兩個變數a ,這裡把function a .....同樣當做變數啊的宣告,那麼下面宣告的a,就覆蓋了上面宣告的a ,顯而易見,就得出了上面的結果。 js 中的變數提公升
我們知道當區域性變數和全域性變數同名時,區域性變數會覆蓋全域性變數。但我們看一段js var scope 全域性變數 functionf f 全域性變數 在全域性範圍 不再函式內 定義的變數 不管是否使用var 不使用var定義的變數都是全域性變數 js中沒有塊範圍指的是 在函式內無論在js中 定義...
js中的變數提公升
我們在宣告變數的時候,會把變數的宣告提到當前作用域的最上方,賦值還是在 原來的位置賦值。console.log x undefined var x 10 console.log x 10上面的 相當於是 var x console.log x x 10 console.log x 把x的宣告提公升到...
js變數提公升
在了解變數提公升之前,應該先了解一下js到底是一種什麼型別的語言,他的執行機制又是怎樣的.console.log global undefined var global global console.log global global function fn fn 可以看出來 變數提公升只是將變數提...