欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JavaScript的運(yùn)行原理怎么掌握

這篇文章主要講解了“JavaScript的運(yùn)行原理怎么掌握”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“JavaScript的運(yùn)行原理怎么掌握”吧!

目前累計(jì)服務(wù)客戶成百上千,積累了豐富的產(chǎn)品開(kāi)發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹(shù)立企業(yè)形象,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)建站始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過(guò)對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺(jué)傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

了解JavaScript 是如何運(yùn)行的,以及的它的運(yùn)行機(jī)制,首先,我們要了解瀏覽器的內(nèi)核:

瀏覽器內(nèi)核

了解過(guò)的都知道:不同的瀏覽器是由不同的內(nèi)核組成,那么有哪些內(nèi)核以及我們常用的瀏覽器都使用了那些內(nèi)核:

  • Gecko:早期被Netscape和Mozilla Firefox瀏覽器瀏覽器使用;

  • Trident:微軟開(kāi)發(fā),被IE4~IE11瀏覽器使用,但是Edge瀏覽器已經(jīng)轉(zhuǎn)向Blink;

  • Webkit:蘋果基于KHTML開(kāi)發(fā)、開(kāi)源的,用于Safari,Google Chrome之前也在使用;

  • Blink:是Webkit的一個(gè)分支,Google開(kāi)發(fā),目前應(yīng)用于Google Chrome、Edge、Opera等;

所謂瀏覽器內(nèi)核,指的是瀏覽器的排版引擎,即瀏覽器引擎。引擎的工作執(zhí)行流程如下:

JavaScript的運(yùn)行原理怎么掌握

但是在這個(gè)執(zhí)行過(guò)程中,HTML解析的時(shí)候遇到了JavaScript標(biāo)簽,應(yīng)該怎么辦呢?
會(huì)停止解析HTML,而去加載和執(zhí)行JavaScript代碼;

當(dāng)然,為什么不直接異步去加載執(zhí)行JavaScript代碼,而要在這里停止掉呢?

所以瀏覽器希望將HTML解析的DOM和JavaScript操作之后的DOM放到一起來(lái)生成最終的DOM樹(shù),而不是頻繁的去生成新的DOM樹(shù);

那么,JavaScript代碼由誰(shuí)來(lái)執(zhí)行呢?
答案:JavaScript 引擎

JavaScript 引擎

為什么需要JavaScript引擎呢?

  • 事實(shí)上我們編寫的JavaScript無(wú)論你交給瀏覽器或者Node執(zhí)行,最后都是需要被CPU執(zhí)行的;

  • 但是CPU只認(rèn)識(shí)自己的指令集,實(shí)際上是機(jī)器語(yǔ)言,才能被CPU所執(zhí)行;

  • 所以我們需要JavaScript引擎幫助我們將JavaScript代碼翻譯成CPU指令來(lái)執(zhí)行;

常見(jiàn)的JavaScript 引擎有哪些呢?

  • SpiderMonkey:第一款JavaScript引擎,由Brendan Eich開(kāi)發(fā)(也就是JavaScript作者);

  • Chakra:微軟開(kāi)發(fā),用于IE瀏覽器;

  • JavaScriptCore:WebKit中的JavaScript引擎,Apple公司開(kāi)發(fā);

  • V8:Google開(kāi)發(fā)的強(qiáng)大JavaScript引擎,也幫助Chrome從眾多瀏覽器中脫穎而出;(V8 是一個(gè)強(qiáng)大的JavaScript 引擎)

V8 引擎

  • V8是用C ++編寫的Google開(kāi)源高性能JavaScript和WebAssembly引擎,它用于Chrome和Node.js等。

  • 它實(shí)現(xiàn)ECMAScript和WebAssembly,并在Windows 7或更高版本,macOS 10.12+和使用x64,IA-32,ARM或MIPS處理器的Linux系統(tǒng)上運(yùn)行。

  • V8可以獨(dú)立運(yùn)行,也可以嵌入到任何C ++應(yīng)用程序中。

V8 引擎執(zhí)行JavaScript 代碼的原理:

Parse模塊會(huì)將JavaScript代碼轉(zhuǎn)換成AST(抽象語(yǔ)法樹(shù)),這是因?yàn)榻忉屍鞑⒉恢苯诱J(rèn)識(shí)- JavaScript代碼;

  • 如果函數(shù)沒(méi)有被調(diào)用,那么是不會(huì)被轉(zhuǎn)換成AST的;

  • Parse的V8官方文檔:https://v8.dev/blog/scanner

Ignition是一個(gè)解釋器,會(huì)將AST轉(zhuǎn)換成ByteCode(字節(jié)碼)

  • 同時(shí)會(huì)收集TurboFan優(yōu)化所需要的信息(比如函數(shù)參數(shù)的類型信息,有了類型才能進(jìn)行真實(shí)的運(yùn)算);

  • 如果函數(shù)只調(diào)用一次,Ignition會(huì)執(zhí)行解釋執(zhí)行ByteCode;

  • Ignition的V8官方文檔:https://v8.dev/blog/ignition-interpreter

TurboFan是一個(gè)編譯器,可以將字節(jié)碼編譯為CPU可以直接執(zhí)行的機(jī)器碼;

  • 如果一個(gè)函數(shù)被多次調(diào)用,那么就會(huì)被標(biāo)記為熱點(diǎn)函數(shù),那么就會(huì)經(jīng)過(guò)TurboFan轉(zhuǎn)換成優(yōu)化的機(jī)器碼,提高代碼的執(zhí)行性能;

  • 但是,機(jī)器碼實(shí)際上也會(huì)被還原為ByteCode,這是因?yàn)槿绻罄m(xù)執(zhí)行函數(shù)的過(guò)程中,類型發(fā)生了變化(比如sum函數(shù)原來(lái)執(zhí)行的是number類型,后來(lái)執(zhí)行變成了string類型),之前優(yōu)化的機(jī)器碼并不能正確的處理運(yùn)算,就會(huì)逆向的轉(zhuǎn)換成字節(jié)碼;

  • TurboFan的V8官方文檔:https://v8.dev/blog/turbofan-jit

感謝各位的閱讀,以上就是“JavaScript的運(yùn)行原理怎么掌握”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)JavaScript的運(yùn)行原理怎么掌握這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

當(dāng)前文章:JavaScript的運(yùn)行原理怎么掌握
文章出自:http://aaarwkj.com/article32/iijppc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化網(wǎng)站營(yíng)銷、動(dòng)態(tài)網(wǎng)站、微信小程序、虛擬主機(jī)、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
国产精品一区二区高潮| 夫妻性生活一级片视频| 色综合色综合色综合色| 国产传媒在线播放一区| 免费观看黄片视频在线播放| 久热在线这里只有精品| 欧美日韩在线视频第三区| 亚洲精品国产中文字幕| 精品不卡一区二区三区| 成年人午夜在线观看网址| 91这里只有精品在线观看| 亚洲综合激情另类专区| 黄色录像一级大片中国的| 国产第一页国产第一页| 91九色在线免费观看| 久久人妻久久人妻久久| 白小白的视频在线观看| 亚洲精品日韩国产av| 欧美香蕉高清视频免费| 国产我不卡在线观看免费| 日韩欧美啪啪一区二区| 日本女优久久精品观看| 国产亚洲av看码精品永久| 亚洲日本一区二区一本一道| 日韩欧美 高清一区| 青青草成人免费在线公开视频| 久久免费欧美日韩亚洲| 日韩av熟女人妻一区二| 丝袜美腿一区二区三区| 91亚洲婷婷国产综合精品| 少妇按摩高潮呻吟av| 亚洲欧美av中文日韩二区| 久久精品亚洲夜色国产av| 成年人三级黄色片视频| 亚洲日本一区二区高清在线| 国产美女作爱视频网站| 亚洲av日韩av在线不卡一区| 国产白丝扒开做爽爽爽网站| 国产精品三级一区二区三区| 日本一道本不卡一区二区| 亚洲一区二区实拍偷拍视频|