教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

什么是預(yù)解析?JavaScript變量預(yù)解析和函數(shù)預(yù)解析

更新時(shí)間:2023年07月18日10時(shí)46分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

JavaScript 代碼是由瀏覽器中的 JavaScript 解析器來執(zhí)行的。JavaScript 解析器在運(yùn)行 JavaScript 代碼的時(shí)候分為兩步:預(yù)解析和代碼執(zhí)行。

預(yù)解析:在當(dāng)前作用域下, JS 代碼執(zhí)行之前,瀏覽器會(huì)默認(rèn)把帶有 var 和 function 聲明的變量在內(nèi)存中進(jìn)行提前聲明或者定義。

代碼執(zhí)行: 從上到下執(zhí)行JS語句。

預(yù)解析只會(huì)發(fā)生在通過 var 定義的變量和 function 上。學(xué)習(xí)預(yù)解析能夠讓我們知道為什么在變量聲明之前訪問變量的值是 undefined,為什么在函數(shù)聲明之前就可以調(diào)用函數(shù)。

預(yù)解析也叫做變量、函數(shù)提升。變量提升變量的聲明會(huì)被提升到當(dāng)前作用域的最上面,變量的賦值不會(huì)提升。

console.log(num);  // 結(jié)果是多少?
var num = 10;      // ?

函數(shù)提升: 函數(shù)的聲明會(huì)被提升到當(dāng)前作用域的最上面,但是不會(huì)調(diào)用函數(shù)。

fn();
function fn() {
    console.log('打印');
}

解決函數(shù)表達(dá)式聲明調(diào)用問題,參考以下代碼。

fn();
var  fn = function() {
    console.log('想不到吧');
}

0 分享到:
和我們?cè)诰€交談!