js中變數提公升與函式變數重名

2021-10-07 10:24:17 字數 601 閱讀 6765

var a = 1;

function b()

}b();

console.log(a); //輸出結果為1

進行變數提公升之後的**

var a;

function b()

a = 10;

return;

}a = 1;

b();

console.log(a);

在函式b中先通過function關鍵字宣告了乙個a函式,相當於 var a = function () ,這個a儲存在b函式的作用域中,再執行a=10時將函式作用域中的a轉換成了number型別,但是這個a變數儲存在b這個函式作用域當中,不會改變全域性作用域中a的值,所以最後的輸出結果為1;

下圖表明在b函式的執行過程中,全域性作用域中的a變數沒有發生改變

JS 變數提公升與函式提公升

在 es6 出來之前,沒有塊級作用域,只有全域性作用域 和 函式作用域。變數提公升指的是 將變數宣告提公升到它所在作用域的最開始部分。例子 console.log foo undefined var foo 變數提公升 console.log foo 變數提公升 相當於 var foo consol...

js 變數 函式提公升

js 變數 函式提公升 先簡單理解下作用域的概念,方便對變數與函式提公升的概念的理解 function foo console.log x foo 2結果為2,可見js中並沒有塊級作用域的概念 可以使用下面的方法創造自己的作用域,這樣不會干擾到外部變數 function foo console.lo...

關於JS變數重名

var a hellow function test test 如上面一段 執行結果為 undefined 1 咋一看略顯奇怪 為什麼第一次alert的不是 hellow 這是因為js中對變數宣告 和 變數賦值 的區別 在js指令碼執行之前,會先將已宣告的函式進行解析 解析過程中用var宣告的變數就...