JS中變數名和函式名重名

2022-07-25 20:57:08 字數 1087 閱讀 8712

var a=100;

function a()

a();// a is not a function

原來函式宣告會置頂

變數宣告也會置頂

函式宣告比變數宣告更置頂(牢記:函式是一等公民)

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

宣告或的變數不會重複宣告

實際上這段**等同於

var a; //函式宣告

var a; //變數宣告(實際上這裡不會重複宣告了)

a = function(); //函式賦值

a = 100;//變數賦值(給a重新賦值了)

a()//a is not a function

而如果**會如下寫法則a方法會執行

var a; //函式宣告

var a; //變數宣告(實際上這裡不會重複宣告了)

a = 100;

a=function()//函式賦值

a()//123

一道有意思的題目

function foo() ; //執行這個函式重新賦值了 getname

return this;

}foo.getname = function () ;

foo.prototype.getname = function () ;

var getname = function () ;

function getname()

//請寫出以下輸出結果:

foo.getname(); // 3

getname(); // 4

foo().getname(); // 1

getname(); // 1

new foo.getname(); // 2

new foo().getname(); // 3

new new foo().getname(); // 3

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 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 函式名和變數名重名

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