js變數提公升

2022-07-06 08:48:10 字數 868 閱讀 2474

先看一段報錯的**:

uncaught syntaxerror: unexpected token class

並沒有輸出"hello world!",因為程式在自上到下執行之前,解析器會事先把**分析一遍(預解析)。在分析的過程中,就已經執行的變數的提公升。

es6之前我們一般使用var來宣告變數,使用var宣告的變數會發生提公升, 變數提公升就是把我們所寫的變數宣告**提公升到它所在作用域的頂端去執行,在**所在的位置來賦值。

在控制台直接輸出乙個變數,會出現異常,

uncaught referenceerror: web is not defined

如果在輸出語句的下面宣告此變數,就不會丟擲異常了。

因為解析器在執行之前分析**的時候,就在變數的宣告提公升到了作用域的頂端。類似如下**:

demo:

變數提公升的效果:

函式宣告的兩種方式:宣告式和字面量式。

//

宣告式function

test() {}

//字面量式

var test1 = function () {}

字面量式的函式提公升效果跟變數提公升的效果是一樣的,因為字面量式的函式只是乙個具體的值。

執行順序為:

但是宣告式的函式提公升和字面量式的函式提公升略有不同,宣告式的函式提公升是整個**塊提公升到它所在的作用域的最開始執行的地方,擁有最高的優先順序。

js變數提公升

在了解變數提公升之前,應該先了解一下js到底是一種什麼型別的語言,他的執行機制又是怎樣的.console.log global undefined var global global console.log global global function fn fn 可以看出來 變數提公升只是將變數提...

js變數提公升

var a 100 functionf console.log a f undefined 200var a 100 functionf f console.log a 100如果你習慣了強型別語言的程式設計方式,那麼看到上述輸出結果你肯定會大吃一驚。我們來看一下c 的乙個例子 include us...

JS變數提公升

在當前作用域中,js 自上而下執行之前,瀏覽器首先會把所有的帶var function關鍵字的進行提前宣告 定義。注意宣告和定義的區別 宣告 declare var num 在當前作用域中吼一嗓子我有num這個名字了。定義 define num 12 把宣告的名字賦值。console.log a u...