JS引擎執行 js 預解析

2021-10-10 06:47:24 字數 1251 閱讀 7585

2 **案例

我們js引擎執行js分為兩步:預解析 、**執行。

預解析js引擎會把js裡面所有的var還有function提公升到當前作用於的最前面。

變數提公升:就是把所有的變數宣告提公升到當前作用域的最前面,不提公升賦值操作。

函式提公升:就是把所有的函式宣告提公升到當前作用域的最前面,不呼叫函式。

按照**書寫的順序從上往下執行。

var num=10;

fun();

function fun()

// 輸出為 undefined

// 相當於以下**

var num;

function fun()

num=10;

fun();

var num;

function fun()

fun();

// 輸出為 undefined 20

面試題 重點

在函式內部,沒有宣告直接賦值的變數也屬於全域性變數。

f1();

console.log(c);

console.log(b);

console.log(a);

function f1()

// 輸出為 9 9 9 9 9 undefined

// 相當於以下**

function f1()

f1();

console.log(c);

console.log(b);

console.log(a);

// 輸出為 9 9 9 9 9 undefined

在立即執行函式中,var a = 20; 語句定義了乙個區域性變數 a,由於js的變數宣告提公升機制,區域性變數a的宣告會被提公升至立即執行函式的函式體最上方,且由於這樣的提公升並不包括賦值,因此第一條列印語句會列印undefined,最後一條語句會列印20。

由於變數宣告提公升,a = 5; 這條語句執行時,區域性的變數a已經宣告,因此它產生的效果是對區域性的變數a賦值,此時window.a 依舊是最開始賦值的10,

var a =10;

(function()

)()

刪除 var a = 20;後,第一次輸出發現a=10 是全域性變數,修改a的值為5後輸出為5

var a =10;

(function()

)()

js基礎 預解析

預解析 1.js引擎執行js分為兩步 預解析和 執行 1 預解析 js引擎會把js裡面所有的var 還有function 提公升到當前作用域的最前面 2 執行 按照 書寫的順序從上往下執行 2.預解析分為變數預解析 變數提公升 和函式預解析 函式提公升 1 變數提公升 就是把所有的變數宣告提公升到當...

js函式預解析

js直譯器在執行js 時,分為兩步 預解析 var和function宣告的變數和函式,將變數或函式提公升至當前作用域的最前面 2.逐行執行 例1 function fun fun 輸出 undefined 原因 使用var 宣告的num 進行了函式內作用域提公升,預解析後,如下 function f...

js學習 一 預解析

js學習 一 預解析 1.js引擎執行js分為兩步 預解析 執行 1 預解析 js引擎將js裡面所有的var和function提公升到當前作用域的最前面 2 執行 按照 書寫的順序從上往下執行 2.預解析分為 變數預解析和函式預解析 1 變數預解析 把所有的變數宣告提公升到當前作用域最前面 不提公升...