JS中變數名和函式名重名

2021-08-21 21:55:26 字數 491 閱讀 4181

var x=12

var x=13

function x()

console.log(x); //

13 //err:x is

not a function

x()

這個串**執行完會報錯 : a is not a function

問題來了,為什麼會報這個錯誤呢? 這裡涉及到函式和變數的預解析:

1)函式宣告會置頂

2)變數宣告也會置頂

3)函式宣告比變數宣告更置頂:(函式在變數上面)

4)變數和賦值語句一起書寫,在js引擎解析時,會將其拆成宣告和賦值2部分,宣告置頂,賦值保留在原來位置

5)宣告過的變數不會重複宣告

知道以上的規則,上面的**等同於 :

var x=function

()var x=100;

x();

JS中變數名和函式名重名

var x 12 var x 13 function x console.log x 13 err x is not a function x 這個串 執行完會報錯 a is not a function 問題來了,為什麼會報這個錯誤呢?這裡涉及到函式和變數的預解析 1 函式宣告會置頂 2 變數宣告...

JS中變數名和函式名重名

var a 100 function a a a is not a function 原來函式宣告會置頂 變數宣告也會置頂 函式宣告比變數宣告更置頂 牢記 函式是一等公民 變數和複製語句一起書寫,在js引擎解析時,會將其拆成宣告和賦值兩個部分,宣告置頂,賦值保留在原來的位置 宣告或的變數不會重複宣告...

JS 函式名和變數名重名

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