Meneroka Sintaks Pengekapsulan JavaScript dalam jQuery
Apabila memeriksa kod sumber jQuery 1.4, seseorang mungkin menghadapi sintaks pengekapsulan berikut:
(function( window, undefined ) { //All the JQuery code here ... })(window);
Sintaks ini menimbulkan persoalan tentang tujuan pembolehubah "undefined" dan penampilan berulang "window."
Maksud "undefined"
Pembolehubah "undefined" dalam kurungan bukan kata kunci simpanan . Sebaliknya, ia adalah pembolehubah biasa yang boleh diberikan nilai baharu. Dalam kes ini, jQuery menetapkan "undefined" sama dengan "undefined" untuk memastikan pembolehubah global "undefined" kekal benar-benar tidak ditentukan.
Kepentingan "window"
Pembolehubah "tetingkap" merujuk kepada objek JavaScript global. Dengan menghantar "tetingkap" sebagai hujah kepada fungsi tanpa nama, jQuery mencipta rujukan tempatan kepada objek global. Rujukan setempat ini meningkatkan prestasi.
Apabila JavaScript mencari pembolehubah, ia mula-mula menyemak skop setempat. Jika pembolehubah tidak ditemui secara setempat, carian diteruskan ke skop seterusnya, dan seterusnya, sehingga skop global dicapai. Dengan mencipta rujukan setempat kepada objek global, JavaScript boleh mencari "tetingkap" dengan cepat tanpa perlu mencari melalui semua skop.
Pengoptimuman ini, seperti yang diterangkan oleh Nicholas C. Zakas dalam artikelnya "Speed Up Your JavaScript ," meningkatkan kelajuan pelaksanaan perpustakaan jQuery dengan ketara.
Atas ialah kandungan terperinci Mengapa jQuery Menggunakan `(function(window, undefined){...})(window);`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!