JavaScript預(yù)解析之變量預(yù)解析和函數(shù)預(yù)解析
首先了解預(yù)解析之前先看兩個(gè)問(wèn)題
1.大家思考下 這個(gè)結(jié)果會(huì)是多少呢?
console.log(num); var num=10;
結(jié)果是 undefined
2.這個(gè)輸出結(jié)果又會(huì)是多少呢?
fun();
var fun=function(){
console.log(22);
}顯然這個(gè)結(jié)果報(bào)錯(cuò)了。
那究竟為什么會(huì)這樣執(zhí)行呢?
1、我們js引擎運(yùn)行js分為兩步: 預(yù)解析 代碼執(zhí)行
- 預(yù)解析 js引擎會(huì)把js里面所有的var還有function提升到當(dāng)前作用域的最前面
- 代碼執(zhí)行 按照代碼書(shū)寫(xiě)的順序從上往下執(zhí)行
2、預(yù)解析分為 變量預(yù)解析(變量提升)和 函數(shù)預(yù)解析(函數(shù)提升)
- 變量提升 就是把所有的變量聲明提升到當(dāng)前作用域最前面 不提升賦值操作
- 函數(shù)提升 就是把所有函數(shù)聲明提升到當(dāng)前作用域的最前面 不調(diào)用函數(shù)
那我們第一個(gè)問(wèn)題就相當(dāng)于執(zhí)行了以下代碼
var num; console.log(num); num=10;
第二個(gè)問(wèn)題相當(dāng)于執(zhí)行了以下代碼
var fun;
fun();
fun=funciton(){
console.log(22);
}這下我們就可以看到 聲明了一個(gè)變量 但是沒(méi)有給值,接著又調(diào)用了fun()這個(gè)函數(shù),但是沒(méi)有這個(gè)函數(shù),肯定會(huì)報(bào)錯(cuò)。
所以函數(shù)表達(dá)式調(diào)用必須要寫(xiě)在函數(shù)表達(dá)式聲明的下面才可以。
相關(guān)文章
JavaScript常用字符串與數(shù)組擴(kuò)展函數(shù)小結(jié)
這篇文章主要介紹了一些JavaScript常用字符串與數(shù)組擴(kuò)展函數(shù),整理了一些簡(jiǎn)單而使用率又高的操作String與Array的函數(shù),需要的朋友可以參考下2016-04-04
用javascript自動(dòng)顯示最后更新時(shí)間
用javascript自動(dòng)顯示最后更新時(shí)間...2007-03-03
Web面試常問(wèn)回流reflow與重繪repaint原理及區(qū)別
本文主要為大家講解了瀏覽器的渲染機(jī)制回流與重繪的原理,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步早日升職加薪2021-09-09
深入理解JavaScript系列(43):設(shè)計(jì)模式之狀態(tài)模式詳解
這篇文章主要介紹了深入理解JavaScript系列(43):設(shè)計(jì)模式之狀態(tài)模式詳解,狀態(tài)模式(State)允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候改變它的行為,對(duì)象看起來(lái)似乎修改了它的類(lèi),需要的朋友可以參考下2015-03-03
JavaScript中函數(shù)的常用寫(xiě)法及調(diào)用方法
這篇文章介紹了JavaScript中函數(shù)的常用寫(xiě)法及調(diào)用方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
分享我學(xué)習(xí)js的過(guò)程 作者aircy javascript學(xué)習(xí)教程
分享我學(xué)習(xí)js的過(guò)程 作者aircy javascript學(xué)習(xí)教程...2007-02-02
JavaScript前端圖片加載管理器imagepool使用詳解
這篇文章主要介紹了JavaScript前端圖片加載管理器imagepool使用詳解,需要的朋友可以參考下2014-12-12
javascript學(xué)習(xí)筆記(二)數(shù)組和對(duì)象部分
本文是學(xué)習(xí)筆記系列的第二篇,深入淺出的分別從javascript對(duì)象和數(shù)組兩個(gè)部分介紹了相關(guān)知識(shí),并附上詳細(xì)示例,非常的實(shí)用,有需要的朋友可以參考下2014-09-09

