中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      JavaScript引擎是什么

      時間:2024-10-06 11:19:04 JavaScript 我要投稿
      • 相關推薦

      JavaScript引擎是什么

        JavaScript引擎是一種為解釋和執行JavaScript代碼而專門設計的流程虛擬機。將通過布局網頁使瀏覽器運行的布局引擎和解釋,執行代碼的較低水平的JavaScript引擎作對比是相當重要的。以下是一些比較到位的闡述。

        JavaScript引擎到底是做什么的呢?

        當一切就緒,JavaScript的基本工作就是將開發者寫的JavaScript代碼轉換成能被瀏覽器理解甚至能在應用程序上運用的最優化的快捷代碼。事實上,JavaScriptCore稱自己是優化的虛擬機。

        更確切地說,每一個 JavaScript 引擎都實現了ECMAScript的一種版本,而JavaScript 是它的一種方言叫法。JavaScript引擎會隨著ECMAScript的發展而進步,因為如此多不同的引擎都要與不同的瀏覽器一起運作,如headless browser, 或者像Node.js這樣的執行環境。

        你可能對網頁瀏覽器很熟悉,但什么是headless browser呢?這是一種沒有形象的用戶交界面的網頁瀏覽器。它們擅長對你的網頁產品進行機械化的測試。PhantomJS.就是很好的例子。那Node.js又是什么呢?

        Node.js是一種允許你在服務器端運用JavaScript的異步事件驅動的框架。既然它們是由JavaScript驅動的工具,它們也就應當受JavaScript引擎的驅動。

        通過以上對虛擬機的定義,將JavaScript引擎稱為流程虛擬機也就是理所當然的了。因為它唯一的目的就是要讀取和編譯JavaScript代碼。然而這并不意味著它只是一種簡單的引擎。舉個例子,JavaScriptCore有6個分區來分析、翻譯、優化以及垃圾收集JavaScript代碼。

        這是如何運作的?

        當然,這取決于引擎。WebKit的JavaScriptCore以及谷歌的V8引擎之所以能引起我們的興趣是因為NativeScript對它們起了杠杠作用。這兩種引擎不同程度地掌握著過程碼。

        JavaScriptCore是通過一系列的步驟去編譯和優化腳本。

        它會對詞匯進行分析,將其分解成一系列的記號,或附上某些既定的意義。這些記號之后會被分析程序理出句法,并嵌入句法樹。之后4個JIT(及時)程序開始運行、分析和執行那些分析程序產生的字節碼。

        嗯?簡單講,JavaScript引擎將你的源代碼分解成串(又叫做分詞),再將那些串轉換成為編譯器能夠理解的字節碼,然后將其執行。

        用C++編寫的谷歌的V8引擎也能編譯和解釋JavaScript源代碼,掌握內存記憶配置且可垃圾回收殘留物。

        它由2個能夠將源代碼直接轉換成計算機代碼的編譯器組成。

        Full-codegen:輸出非優化代碼的快速編譯器。

        Crankshaft:輸出快速,優化代碼的慢速編譯器。

        如果Crankshaft認為由Full-codegen產生的不夠優化的代碼需要優化,它將會取而代之,這就是“crankshafting”流程。

        有趣的事實:機軸是運用在自動化產業中內部氧化引擎里的一個完整的部分。這種眾所周知的引擎在更高級的載體也就是V8中有所運用。

        若計算機代碼是由編譯過程產生的,那么這個引擎就會在瀏覽器中顯示出所有的ECMA標準規定的數據類型、操作員、客體和功能,或者任何需要用到它們的運行環境,如NativeScript.

        JavaScript引擎有哪些呢?

        市場上有許多令人暈眩的JavaScript引擎要去分析、理解和執行客戶端的代碼。隨著每一種瀏覽器新版本的出現,JavaScript引擎有時會做出一些改變或優化來和JavaScript代碼編譯中的技術水平相契合。

        為了避免被那些引擎的各種名字搞暈,請記住,有許多市場營銷計劃會研究到它們強調的引擎和瀏覽器。在這份實用的JavaScript編輯器的分析報告中,作者諷刺到:萬一你不理解,你要明白在編譯器中,差不多有37%是由市場因素組成的,品牌重塑是你在編輯器上可以做的不多的事情之一,因此引擎被賦予了迎合市場的名字:SquirrelFish, Nitro, SFX…

        在市場因素對為引擎進行命名以及重命名有著重要影響的情況下,對JavaScript引擎發展史上的重大事件做記錄是很有必要的。為此,我編輯了一份便捷的表格供大家使用:

      Browser, Headless Browser, or Runtime JavaScript Engine
      Mozilla Spidermonkey
      Chrome V8
      Safari** JavaScriptCore*
      IE and Edge Chakra
      PhantomJS JavaScriptCore
      HTMLUnit Rhino
      TrifleJS V8
      Node.js*** V8
      Io.js*** V8

        JavaScriptCore被重寫為SquirrelFish,也被重塑成SquirrelFishExtreme品牌,又叫做Nitro。然而,在WebKit安裝啟用下的JavaScript的確也被稱為JavaScript引擎(如Safari)。

        **iOS開發者應該認識到Mobile Safari包含Nitro,但UIWebView并不包括JIT編譯器,所以這個過程會比較慢。然而,有了iOS8系統,開發者可以運用包含Nitro的WKWebView來大幅度加速這個運行速度。Hybrid App的開發者應該會覺得比較輕松。

        之所以有做出將io.js從Node.js中分離出來的一個因素是和可以支持這個項目的V8版本有關。這將會是一個挑戰,就像這邊所列出來的一樣。

      【JavaScript引擎是什么】相關文章:

      javascript是什么意思10-08

      javascript函數到底是什么04-29

      理解javascript中的with關鍵字是什么意思10-11

      調用javascript08-02

      對javascript的理解08-08

      javascript的方法08-09

      Javascript模板07-29

      編寫JavaScript函數10-24

      Javascript 函數的學習09-11

      Javascript的this用法簡述08-15

      主站蜘蛛池模板: 久久久久久免费播放一级毛片 | 兴安盟| 久久久亚洲精品免费视频| 久久人成免费网站小草| 亚洲二区三区在线播放| 亚洲av成色精品久久私人影院| 婷婷五月亚洲综合图区| 国产裸体AV久无码无遮挡| 四虎影视国产884a精品亚洲| 鄂伦春自治旗| 阿克苏市| 99久久久国产精品系列| 热re99久久精品国产66热6 | 99久久免费精品色老| 增城市| 会东县| 丰都县| 浦北县| 济宁市| 左权县| 熟女丝袜美腿亚洲一区二区三区| 淄博市| 巴林右旗| 国产精品剧情一区二区三区av | 亚洲乱在线播放| 蜜桃成人午夜激情网站| 炉霍县| 定兴县| 久久久精品亚洲懂色av| 国产AV无码无遮挡毛片| 亚洲女同精品久久女同| 久久国产精品超级碰碰热| 国产精品亚洲一区二区极品| 粉嫩av一区二区在线观看| 亚洲国产日本精品一区二区三区| Jizz国产一区二区| 国内精品国产三级国产a久久| 亚洲女同一区二区三久久精品 | 国产美女主播在线一区| 日本亚洲成人中文字幕| 国产日产久久福利精品一区|