關於JS變數重名

2021-06-08 09:07:18 字數 334 閱讀 9803

var a = "hellow";

function test()

test();

如上面一段** 執行結果為 undefined 1

咋一看略顯奇怪 為什麼第一次alert的不是「hellow」

這是因為js中對變數宣告 和 變數賦值 的區別

在js指令碼執行之前,會先將已宣告的函式進行解析(解析過程中用var宣告的變數就已經被定義了)。那麼在呼叫函式時,就可以使用被var宣告的變數了。但是變數賦值這一過程則會在呼叫函式時才會執行,由於js**是逐行執行 在a被賦值前 執行alert(a) 必然是undefined 

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

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 這...

JS 函式名和變數名重名

繼續作用域的問題,今天上午看了一會,下午看又看到了乙個型別的題,函式名和變數名相同的問題。之前還不會覺得函式名和變數名重名了會有什麼衝突。也是沒有去測試過。懶了。直接貼 出乎意料的報錯了,有點一頭霧水的感覺。但是一步一步的去分析的話,還是可以明白為什麼會是這個答案。首先這道題需要和js的預編譯階段掛...

JS 函式名和變數名重名

繼續作用域的問題,今天上午看了一會,下午看又看到了乙個型別的題,函式名和變數名相同的問題。之前還不會覺得函式名和變數名重名了會有什麼衝突。也是沒有去測試過。懶了。直接貼 出乎意料的報錯了,有點一頭霧水的感覺。但是一步一步的去分析的話,還是可以明白為什麼會是這個答案。首先這道題需要和js的預編譯階段掛...