這篇文章將為大家詳細(xì)講解有關(guān)深入淺析JS中的執(zhí)行模型,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到定襄網(wǎng)站設(shè)計(jì)與定襄網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋定襄地區(qū)。JavaScript執(zhí)行模型
引言
JavaScript是一個(gè)單線程(Single-threaded)異步(Asynchronous)非阻塞(Non-blocking)并發(fā)(Concurrent)語(yǔ)言,這些語(yǔ)言效果通過(guò)一個(gè)調(diào)用棧(Call Stack)、一個(gè)事件循環(huán)(Event Loop)、一個(gè)回調(diào)隊(duì)列(Callback Queue)有些時(shí)候也叫任務(wù)隊(duì)列(Task Queue)與跟運(yùn)行環(huán)境相關(guān)的API組成。
概念
調(diào)用棧 Call Stack
調(diào)用棧是一個(gè)LIFO后進(jìn)先出數(shù)據(jù)結(jié)構(gòu)的函數(shù)運(yùn)行棧,它內(nèi)部的數(shù)據(jù)結(jié)構(gòu)為函數(shù)幀。當(dāng)在JavaScript中調(diào)用一個(gè)函數(shù)時(shí),它將被壓入棧中,當(dāng)這個(gè)函數(shù)內(nèi)部還有另一個(gè)函數(shù)被調(diào)用時(shí),另一個(gè)函數(shù)將會(huì)被壓入棧頂,直到其內(nèi)部沒(méi)有更多調(diào)用,棧頂函數(shù)將會(huì)被以單線程方式執(zhí)行并出棧,直到最后一個(gè)函數(shù)幀出棧。JavaScript語(yǔ)言特性中的單線程就是指的調(diào)用棧的單線程運(yùn)行。
function multiply(a, b) { return a * b; } function square(n) { return multiply(n, n) } function printSquare(n) { console.log(square(n)); } printSquare(4);