js 變數 函式宣告提前問題

2021-09-19 04:48:47 字數 704 閱讀 8152

1、變數宣告提前:

看**

(function()

})()

/* 以上**報錯:referenceerror: a is not defined,

* 這很好理解 根本就沒宣告當然報錯啦,往下看:

*/(function()

})()

//以上**對於直譯器來說是下面這樣的,所以沒有報錯,且輸出了undefined;

(function()

})()

//再來看一中情況:

(function()

})()

/* *原因如下:對於直譯器來**是這樣的

*/(function()

})()

2、函式提前:

(function()

})// 以上**中函式add 不只是宣告提前了而是整個add函式的定義都被提前了

//另一種情況:

(function()

})()

//對於編譯器來說**如下:

(function()

})()

**總結:**

1、變數的宣告被提前到作用域頂部,賦值保留在原地

2、函式宣告整個「被提前」

3、函式作為值賦給變數時只有變數「被提前」了,函式沒有「被提前」

變數宣告提前與函式宣告提前

變數的宣告提前 在全域性作用域中,使用var關鍵字宣告的變數會在所有的 執行之前被宣告,但是不會賦值。所以我們可以在變數宣告前使用變數。但是不使用var關鍵字宣告的變數不會被宣告提前。在函式作用域中,也具有該特性,使用var關鍵字宣告的變數會在函式所有的 執行前被宣告,如果沒有使用var關鍵字宣告變...

變數宣告提前 總結 js

js在執行時,js變數宣告語句無論出現在何處,都會先於其他 首先被執行。使用var的宣告的變數會提前。先舉個例子看看 console.log a function a var a 3 var b function console.log a 3function a b console.log a 4...

js 理解變數宣告提前

console.log a 不會出錯,會輸出undefined var a 100 console.log a 100 由於從上往下執行時遇見了var,所以實際執行順序 var a 宣告提前 console.log a undefined a 100 賦值任然留在原位置 console.log a ...