Rumah hujung hadapan web Soal Jawab bahagian hadapan Sokongan apa yang javascript bergantung?

Sokongan apa yang javascript bergantung?

Sep 30, 2022 pm 03:19 PM
javascript

Javascript bergantung pada sokongan enjin javascript yang mendasari. JavaScript berjalan dalam penyemak imbas dan bergantung terutamanya pada enjin JS penyemak imbas untuk mentafsir dan melaksanakan kod JS. Enjin JavaScript ialah mesin maya yang pakar dalam memproses skrip JavaScript dan biasanya disertakan dengan pelayar web untuk mentafsir dan melaksanakan skrip JS.

Sokongan apa yang javascript bergantung?

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.

Javascript bergantung pada sokongan enjin js asas.

Javascript berjalan dalam penyemak imbas dan bergantung terutamanya pada enjin js penyemak imbas untuk mentafsir dan melaksanakan kod js. Perisian lain dengan enjin js juga boleh menjalankan js, tetapi secara amnya js berkait rapat dengan halaman web, jadi ia biasanya dijalankan dalam penyemak imbas.

enjin javascript

Enjin JavaScript ialah mesin maya yang mengkhusus dalam memproses skrip JavaScript Ia biasanya disertakan dalam pelayar web dan digunakan untuk Mentafsir dan melaksanakan skrip js.

Enjin js terkenal:

Mozilla: Enjin SpiderMonkey, enjin JavaScript pertama di dunia, ditulis dalam C/C, digunakan dalam Mozilla Firefox versi 1.0~3.0

Google: Enjin V8, ditulis dalam bahasa C/himpunan, digunakan dalam penyemak imbas krom

Microsoft: Enjin Chakra, digunakan dalam versi 32-bit Internet Explorer 9

Hubungan antara kernel pelayar dan enjin JS

Ambil webkit sebagai contoh:

Sokongan apa yang javascript bergantung?

Enjin V8

1. Prinsip enjin V8

Enjin V8 ialah enjin JavaScript dan WebAssembly berprestasi tinggi sumber terbuka Google yang ditulis dalam C. Gunakan Untuk Chrome dan Node. js, dsb.

Ia melaksanakan ECMAScript dan WebAssembly dan berjalan pada Windows 7 atau lebih tinggi, sistem macOS 10.12 dan Linux menggunakan pemproses x64, IA-32, ARM atau MIPS.

Enjin V8 boleh berjalan secara bebas atau dibenamkan ke dalam mana-mana aplikasi C. Sebagai contoh, penggunaan Node.js dalam enjin V8 boleh dianggap sebagai membenamkan enjin V8 ke dalam aplikasi Kemudian Node.js mempunyai keupayaan untuk melaksanakan kod JavaScript.

Skema:

Sokongan apa yang javascript bergantung?

① Modul Parse akan menukar kod JavaScript kepada AST Ini kerana penterjemah tidak memahami kod JavaScript secara langsung. Jika fungsi tidak dipanggil, ia tidak akan ditukar kepada AST

② Ignition ialah penterjemah dan akan menukar AST kepada ByteCode. Pada masa yang sama, maklumat yang diperlukan untuk pengoptimuman TurboFan akan dikumpul (seperti maklumat jenis parameter fungsi, hanya dengan jenis operasi sebenar boleh dilakukan). Jika fungsi dipanggil sekali sahaja, Ignition menukarkan AST kepada ByteCode

③ Mengapakah ia akhirnya ditukar kepada bytecode dan bukannya terus kepada kod mesin?

Oleh kerana persekitaran di mana kod JS dilaksanakan tidak ditetapkan Ia mungkin menggunakan penyemak imbas dalam persekitaran Windows, persekitaran mac atau persekitaran Linux, atau ia mungkin berada dalam Persekitaran Node.js tidak tetap, akan terdapat CPU yang berbeza dalam persekitaran yang berbeza, CPU yang berbeza mempunyai seni bina CPU yang berbeza, dan arahan mesin yang boleh dilaksanakan oleh seni bina berbeza adalah berbeza.

Sokongan apa yang javascript bergantung?

ditukar kepada kod bait yang ditentukan oleh enjin V8 Ia boleh dilaksanakan dalam mana-mana persekitaran dan merupakan platform silang Akhirnya, enjin V8 akan menukar kod bait kepada pemasangan. Arahan kemudiannya ditukar kepada arahan CPU yang sepadan dengan persekitaran yang berbeza.

Tetapi masih tidak cukup selesa untuk melalui proses ini setiap kali. Sebagai contoh, terdapat fungsi yang digunakan semula, tetapi menggunakan set proses sebelumnya, setiap kali fungsi ini digunakan, ia perlu ditukar kepada kod bait dan kemudian bertukar menjadi arahan CPU Jika fungsi ini boleh secara langsung Tukarkannya kepada arahan mesin dan simpannya Apabila menggunakan fungsi ini, jalankan arahan mesin secara terus, yang mempunyai prestasi yang lebih tinggi Namun, jika fungsi ini hanya dijalankan sekali, tidak perlu menukarnya kepada kod mesin dan menyimpannya , yang akan membazir ruang.

④ Gunakan perpustakaan TurboFan, iaitu pengkompil yang menyusun kod bait ke dalam kod mesin yang boleh dilaksanakan secara langsung oleh CPU Dia boleh menggunakan pencucuhan untuk mengumpul maklumat pelaksanaan fungsi dan mengetahui fungsi yang mempunyai masa pelaksanaan yang lebih tinggi . Ramai yang akan menandakan fungsi seperti panas, fungsi panas, dan kemudian menukar fungsi ini kepada arahan mesin yang dioptimumkan pada masa hadapan, tidak perlu melalui proses yang membosankan di atas dan hanya melaksanakan arahan mesin secara terus.

Tetapi sebenarnya kod mesin juga akan dipulihkan kepada ByteCode Ini kerana jika jenis berubah semasa pelaksanaan fungsi berikutnya, kod mesin yang dioptimumkan sebelum ini tidak dapat mengendalikan operasi dengan betul dan akan ditukar secara terbalik. . ialah bytecode.

⑤, Penyahoptimuman: Contohnya, terdapat fungsi

function  sum(num1,num2){
   num1+num2
}
Salin selepas log masuk

yang memanggil fungsi jumlah

sum(20,30)
sum(28,30)
Salin selepas log masuk

如果传入数字,调用sum函数,需要做的工作就是对两个数字进行相加,执行的机器指令永远是对这两个数字进行相加.
一旦改变传入值的类型,如果变成字符串,那么这个函数的意思就是两个字符串拼接。

sum("aaa","bbb")
Salin selepas log masuk

这两种类型的传入值执行“+”操作对应的机器指令是不同的,JavaScript是不会对传入值的类型做检测的,那么还是使用数字相加的机器指令,这次函数调用的结果是不能够使用的。

但是V8引擎中提供了一种解决办法Deoptimization过程,这个过程是,一旦发现在执行机器指令时候,执行的操作不一样的时候,Deoptimization会反向优化,又转化为字节码,执行后续操作。

2、V8引擎的解析图

Sokongan apa yang javascript bergantung?

V8执行的细节:

①、Blink将源码交给V8引擎,Stream获取到源码并且进行编码转换

②、scanner会进行词法分析,词法分析之后会将代码转换为成tokens

③、tokens会被转换为AST树,经过Parser和PreParser:

Parser就是直接将tokens转换为AST树架构;

PreParser预解析,为什么会需要预解析?

1)如上图中的函数outer(),内部有一个函数inner(),但是并没有任何调用inner()的代码,那么就意味着并不是所有的JavaScript代码,都是一开始就被执行。对所有的JavaScript代码进行解析,必定会影响网页的运行效率。

2)V8引擎实现了Lazy Parsing(延迟解析)的方案,作用是将不必要的函数进行预解析,我只需要知道有这么个函数就行,也就是只解析暂时需要的内容,对函数的全量解析在函数被调用的时候才会执行。

3)例如上图中函数outer中的inner函数,它就是会执行预解析。

④、生成AST树之后,会被Ignition转成字节码,之后的过程就是代码的执行过程。

【相关推荐:javascript视频教程编程视频

Atas ialah kandungan terperinci Sokongan apa yang javascript bergantung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan sistem pengecaman pertuturan dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem pengecaman pertuturan dalam talian menggunakan WebSocket dan JavaScript Dec 17, 2023 pm 02:54 PM

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian Pengenalan: Dengan perkembangan teknologi yang berterusan, teknologi pengecaman pertuturan telah menjadi bahagian penting dalam bidang kecerdasan buatan. Sistem pengecaman pertuturan dalam talian berdasarkan WebSocket dan JavaScript mempunyai ciri kependaman rendah, masa nyata dan platform merentas, dan telah menjadi penyelesaian yang digunakan secara meluas. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem pengecaman pertuturan dalam talian.

WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata WebSocket dan JavaScript: teknologi utama untuk melaksanakan sistem pemantauan masa nyata Dec 17, 2023 pm 05:30 PM

WebSocket dan JavaScript: Teknologi utama untuk merealisasikan sistem pemantauan masa nyata Pengenalan: Dengan perkembangan pesat teknologi Internet, sistem pemantauan masa nyata telah digunakan secara meluas dalam pelbagai bidang. Salah satu teknologi utama untuk mencapai pemantauan masa nyata ialah gabungan WebSocket dan JavaScript. Artikel ini akan memperkenalkan aplikasi WebSocket dan JavaScript dalam sistem pemantauan masa nyata, memberikan contoh kod dan menerangkan prinsip pelaksanaannya secara terperinci. 1. Teknologi WebSocket

Cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata Cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata Dec 17, 2023 pm 12:09 PM

Pengenalan kepada cara menggunakan JavaScript dan WebSocket untuk melaksanakan sistem pesanan dalam talian masa nyata: Dengan populariti Internet dan kemajuan teknologi, semakin banyak restoran telah mula menyediakan perkhidmatan pesanan dalam talian. Untuk melaksanakan sistem pesanan dalam talian masa nyata, kami boleh menggunakan teknologi JavaScript dan WebSocket. WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang boleh merealisasikan komunikasi dua hala masa nyata antara pelanggan dan pelayan. Dalam sistem pesanan dalam talian masa nyata, apabila pengguna memilih hidangan dan membuat pesanan

Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript Bagaimana untuk melaksanakan sistem tempahan dalam talian menggunakan WebSocket dan JavaScript Dec 17, 2023 am 09:39 AM

Cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian Dalam era digital hari ini, semakin banyak perniagaan dan perkhidmatan perlu menyediakan fungsi tempahan dalam talian. Adalah penting untuk melaksanakan sistem tempahan dalam talian yang cekap dan masa nyata. Artikel ini akan memperkenalkan cara menggunakan WebSocket dan JavaScript untuk melaksanakan sistem tempahan dalam talian dan memberikan contoh kod khusus. 1. Apakah itu WebSocket? WebSocket ialah kaedah dupleks penuh pada sambungan TCP tunggal.

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Dec 17, 2023 pm 05:13 PM

JavaScript dan WebSocket: Membina sistem ramalan cuaca masa nyata yang cekap Pengenalan: Hari ini, ketepatan ramalan cuaca sangat penting kepada kehidupan harian dan membuat keputusan. Apabila teknologi berkembang, kami boleh menyediakan ramalan cuaca yang lebih tepat dan boleh dipercayai dengan mendapatkan data cuaca dalam masa nyata. Dalam artikel ini, kita akan mempelajari cara menggunakan teknologi JavaScript dan WebSocket untuk membina sistem ramalan cuaca masa nyata yang cekap. Artikel ini akan menunjukkan proses pelaksanaan melalui contoh kod tertentu. Kami

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Bagaimana untuk menggunakan insertBefore dalam javascript Bagaimana untuk menggunakan insertBefore dalam javascript Nov 24, 2023 am 11:56 AM

Penggunaan: Dalam JavaScript, kaedah insertBefore() digunakan untuk memasukkan nod baharu dalam pepohon DOM. Kaedah ini memerlukan dua parameter: nod baharu untuk dimasukkan dan nod rujukan (iaitu nod di mana nod baharu akan dimasukkan).

JavaScript dan WebSocket: Membina sistem pemprosesan imej masa nyata yang cekap JavaScript dan WebSocket: Membina sistem pemprosesan imej masa nyata yang cekap Dec 17, 2023 am 08:41 AM

JavaScript ialah bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan web, manakala WebSocket ialah protokol rangkaian yang digunakan untuk komunikasi masa nyata. Menggabungkan fungsi berkuasa kedua-duanya, kami boleh mencipta sistem pemprosesan imej masa nyata yang cekap. Artikel ini akan memperkenalkan cara untuk melaksanakan sistem ini menggunakan JavaScript dan WebSocket, dan memberikan contoh kod khusus. Pertama, kita perlu menjelaskan keperluan dan matlamat sistem pemprosesan imej masa nyata. Katakan kita mempunyai peranti kamera yang boleh mengumpul data imej masa nyata

See all articles