Tiada perbezaan.
Anda perlu memahami prinsip IIFE, izinkan saya menerangkan secara ringkas:
IIFE tidak diperlukan untuk menjadi lebih tradisional, anda boleh menulisnya seperti ini:
Jadi kenapa IIFE?
1. Kaedah tradisional adalah rumit, dan definisi dan pelaksanaan ditulis secara berasingan;
2. Kaedah tradisional secara langsung mencemarkan ruang nama global (objek global dalam penyemak imbas, seperti tetingkap)
fungsi foo(...){}();
Sudah tentu tidak, tetapi mengapa? Oleh kerana bahagian fungsi foo(...){} hanyalah pernyataan, kepada penterjemah, ia seperti anda menulis rentetan "function foo(...){}", yang memerlukan penggunaan fungsi penghuraian, seperti eval () untuk melaksanakannya. Jadi meletakkan () terus selepas pernyataan tidak akan dilaksanakan, yang merupakan sintaks yang salah.
Bagaimana untuk membuatnya betul? Senang cakap, cuma tukar pernyataan itu menjadi ungkapan (Ekspresi).
Sebenarnya, terdapat banyak cara untuk mengubah ungkapan Cara yang paling biasa ialah membungkus pengisytiharan fungsi dengan sepasang (), jadi ia menjadi:
(fungsi foo(){...}());
Jadi anda bertanya, adakah terdapat perbezaan? Sangat mudah: Tidak~
Selain itu, seperti yang saya katakan terdapat banyak cara untuk mengubah ekspresi, sememangnya terdapat banyak cara lain untuk menulisnya, seperti:
!function foo() {...}();
atau
fungsi foo() {...}();
Ini semua baik-baik saja.
Saya secara peribadi lebih suka menggunakan void untuk menukar ungkapan, kerana kata kunci ini tidak mempunyai nilai pulangan. Tetapi perkara ini sebenarnya tidak penting, cuma layan saya sebagai "kura-kura"...
Saya telah menulis satu siri di sini, salah satunya membincangkan tentang skop dan promosi penamaan di dalamnya membantu untuk memahami IIFE Jika anda berminat, anda boleh terus membaca secara mendalam: http://. www.jb51 .net/article/75090.htm
Kaedah pertama, panggil fungsi dan dapatkan nilai pulangan. Memaksa fungsi untuk dilaksanakan secara langsung dan kemudian mengembalikan rujukan, yang kemudiannya dipanggil dan dilaksanakan
Kaedah kedua, panggil fungsi dan dapatkan nilai pulangan. Pengendali paksaan menyebabkan panggilan fungsi untuk melaksanakan
(function(){})(); adalah untuk menghuraikan fungsi sebagai ungkapan dan kemudian melaksanakan fungsi yang dihuraikan
Bersamaan dengan var a = function(){}; a mendapat fungsi
(function(){}()); adalah untuk melaksanakan secara langsung ungkapan fungsi dan pelaksanaan sebagai pernyataan,
Bersamaan dengan var a = function(){}(); a mendapat hasil
Hasil akhirnya adalah sama,
() hanya memainkan peranan melaksanakan diri
Terdapat banyak lagi seperti ()
Contohnya fungsi (){}
Ini bersamaan dengan (fungsi (){} Secara umumnya, (fungsi (){}) mempunyai kesan lain, iaitu untuk mengelakkan pembolehubah global