


Analisis mendalam tentang mekanisme penutupan JavaScript_Pengetahuan asas
Pembolehubah JavaScript boleh menjadi pembolehubah tempatan atau pembolehubah global.
Penutupan boleh digunakan untuk pembolehubah persendirian.
Pembolehubah global
Fungsi boleh mengakses pembolehubah yang ditakrifkan dalam fungsi, seperti:
Contoh
function myFunction() { var a = 4; return a * a; }
Fungsi juga boleh mengakses pembolehubah yang ditakrifkan di luar fungsi, seperti:
Contoh
var a = 4; function myFunction() { return a * a; }
Dalam contoh terakhir, a ialah pembolehubah global.
Pembolehubah global dalam halaman web tergolong dalam objek tetingkap.
Pembolehubah global digunakan pada semua skrip pada halaman.
Dalam contoh pertama, a ialah pembolehubah tempatan.
Pembolehubah tempatan hanya boleh digunakan di dalam fungsi di mana ia ditakrifkan. Tidak tersedia untuk fungsi lain atau kod skrip.
Walaupun pembolehubah global dan tempatan mempunyai nama yang sama, ia adalah dua pembolehubah yang berbeza. Mengubah suai salah satu daripadanya tidak akan menjejaskan nilai yang lain.
Nota
Jika pembolehubah diisytiharkan tanpa kata kunci var, ia adalah pembolehubah global, walaupun ia ditakrifkan dalam fungsi.
Kitaran hayat boleh ubah
Skop pembolehubah global adalah global, iaitu pembolehubah global terdapat di mana-mana dalam keseluruhan program JavaScript.
Pembolehubah yang diisytiharkan di dalam fungsi hanya berfungsi di dalam fungsi. Pembolehubah ini adalah pembolehubah tempatan dan skopnya adalah setempat; parameter fungsi juga adalah setempat dan hanya berfungsi di dalam fungsi.
Dilema Kaunter
Bayangkan anda ingin mengira beberapa nilai, dan kaunter tersedia dalam semua fungsi.
Anda boleh menggunakan pembolehubah global, fungsi untuk menetapkan pembilang kepada kenaikan:
Contoh
var counter = 0; function add() { counter += 1; } add(); add(); add(); // 计数器现在为 3
Nilai pembilang berubah apabila fungsi add() dilaksanakan.
Tetapi inilah masalahnya, mana-mana skrip pada halaman boleh menukar kaunter, walaupun fungsi add() tidak dipanggil.
Jika saya mengisytiharkan pembilang di dalam fungsi, nilai pembilang tidak boleh diubah suai tanpa memanggil fungsi:
Contoh
function add() { var counter = 0; counter += 1; } add(); add(); add(); // 本意是想输出 3, 但事与愿违,输出的都是 1 !
Kod di atas tidak akan dikeluarkan dengan betul, setiap kali saya memanggil fungsi add(), pembilang akan ditetapkan kepada 1.
Fungsi sebaris JavaScript boleh menyelesaikan masalah ini.
Fungsi terbina dalam JavaScript
Semua fungsi mempunyai akses kepada pembolehubah global.
Malah, dalam JavaScript, semua fungsi mempunyai akses kepada skop di atasnya.
JavaScript menyokong fungsi bersarang. Fungsi bersarang boleh mengakses pembolehubah fungsi peringkat atas.
Dalam contoh ini, fungsi sebaris plus() boleh mengakses pembolehubah pembilang fungsi induk:
Contoh
function add() { var counter = 0; function plus() {counter += 1;} plus(); return counter; }
Jika kita boleh mengakses fungsi tambah() secara luaran, ini akan menyelesaikan dilema balas.
Kita juga perlu memastikan bahawa kaunter = 0 hanya dilaksanakan sekali.
Kami memerlukan penutupan.
Penutupan JavaScript
Ingat fungsi memanggil dirinya sendiri? Apakah fungsi ini?
Contoh
var add = (function () { var counter = 0; return function () {return counter += 1;} })(); add(); add(); add(); // 计数器为 3
Contoh analisis
Tambah pembolehubah menentukan nilai perkataan pulangan bagi fungsi yang memanggil itu sendiri.
Fungsi panggilan kendiri dilaksanakan sekali sahaja. Tetapkan pembilang kepada 0. dan mengembalikan ungkapan fungsi.
Pembolehubah tambah boleh digunakan sebagai fungsi. Bahagian yang menarik ialah ia memberikan akses kepada pembilang dari skop di atas fungsi.
Ini dipanggil penutupan JavaScript. Ia membolehkan fungsi mempunyai pembolehubah persendirian.
Kaunter dilindungi oleh skop fungsi tanpa nama dan hanya boleh diubah suai melalui kaedah tambah.
Nota
Penutupan ialah fungsi yang boleh mengakses pembolehubah dalam skop fungsi sebelumnya, walaupun fungsi sebelumnya telah ditutup.

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.