Rumah >hujung hadapan web >tutorial js >Mengapa jQuery Menggunakan `(function(window, undefined){...})(window);`?

Mengapa jQuery Menggunakan `(function(window, undefined){...})(window);`?

Patricia Arquette
Patricia Arquetteasal
2024-12-11 02:45:09760semak imbas

Why Does jQuery Use `(function(window, undefined){...})(window);`?

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!

Kenyataan:
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