javaScript 代碼解釋執(zhí)行過(guò)程

javaScript 是由瀏覽器解釋執(zhí)行的腳本語(yǔ)言,不需要先編譯后執(zhí)行,而是通過(guò)瀏覽器 js 解釋器進(jìn)行解釋執(zhí)行
執(zhí)行過(guò)程分為兩步:預(yù)編譯期和執(zhí)行期(以代碼塊為單位,邊解釋邊執(zhí)行)

預(yù)編譯期 js解釋器會(huì)對(duì)本代碼段內(nèi)所有的 聲明的變量和方法進(jìn)行處理,將變量和方法提到對(duì)應(yīng)的作用域的最前面,該過(guò)程只是對(duì)變量進(jìn)行聲明,并不會(huì)進(jìn)行初始化或者賦值(缺省值默認(rèn)為undefined)

JavaScript 中局部變量只可能通過(guò)兩種方式聲明,一個(gè)是作為函數(shù)參數(shù),另一個(gè)是通過(guò) var 關(guān)鍵字聲明。 var 表達(dá)式和 function 聲明都將會(huì)被提升到當(dāng)前作用域的頂部

編譯前
foo();  //alert(1)
function foo(){  //聲明式函數(shù)
  alert(1);
}
foo2();  //undefined is not a function 
var foo2 = function(){  //賦值式函數(shù)聲明,其實(shí)是函數(shù)表達(dá)式
  alert("foo2");
};
編譯后
var foo2;  //缺省值是'undefined'
function foo(){
 alert(1);
}
foo();
foo2();  //undefined is not a function 
foo2 = function(){
  alert('foo2');
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容