javascript變數名和函式名相同如何處理

antzone發表於2017-04-10

本章節介紹一下javascript中,如果變數名和函式名稱衝突的時候是如何處理的。

先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
console.log(typeof fn)
function fn() {
  //code
}
var fn

上面的程式碼的輸出值是"function"而不是undefined。

這說明變數宣告並沒有覆蓋掉函式宣告,下面就對此做一下解釋。

函式宣告優先順序要高於變數的宣告,但是變數賦值以後,就會覆蓋之前宣告的函式。

[JavaScript] 純文字檢視 複製程式碼
function fn() {
  //code
}
var fn;
fn = 5;
console.log(typeof fn)

上面程式碼的輸出值"number",因為上面的變數被賦值為5。

如果console.log()放在程式碼的開頭的話,輸出值依然是"function",因為變數和函式宣告都會被提升(這時候還沒有執行賦值語句)。

相關文章