Adakah \'(fungsi () { }) ()\' dan \'(fungsi () { })()\' Secara Fungsinya Sama dalam JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-10-30 08:53:02
asal
853 orang telah melayarinya

Are

Adakah "(function () { }) ()" dan "(function () { })()" Secara Fungsinya Sama dalam JavaScript?

Dalam JavaScript, dua blok kod berikut kelihatan menghasilkan hasil yang sama:

(function () {
    bar = 'bar';
    alert('foo');
})();

alert(bar);
Salin selepas log masuk
(function () {
    bar = 'bar';
    alert('foo');
}());

alert(bar);
Salin selepas log masuk

Kedua-dua blok memaparkan mesej "foo" diikuti dengan "bar". Walau bagaimanapun, adakah terdapat perbezaan fungsi antara kedua-dua struktur kod ini?

Jawapan

Blok Kod Adalah Sama

Dalam keadaan biasa, "(function ( ) { }) ()" dan "(function () { })()" secara fungsinya sama dalam JavaScript. Kedua-duanya menggunakan fungsi tanpa nama dan segera melaksanakannya. Fungsi ini memulakan pembolehubah bar dan memaklumkan mesej "foo".

Perbezaan dengan Sintaks Lain

Namun, apabila sintaks tambahan ditambahkan pada kod, perbezaan boleh muncul.

Kes 1: Sintaks Pembina Fungsi

Pertimbangkan kod berikut:

new (function () {
    this.prop = 4;
}) ().prop;
Salin selepas log masuk

Kod ini mencipta tika baharu kelas fungsi dan mendapatkan semula sifat prop bagi tika baharu. Ia mengembalikan nilai 4.

Kes 2: Sintaks Ruang Nama

Pertimbangkan kod berikut:

new ( function() {
    return { Class: function() { } }; 
}() ).Class;
Salin selepas log masuk

Kod ini memanggil operator baharu pada sifat Kelas. Disebabkan kurungan bersarang, fungsi ini digunakan secara normal dan nilai pulangannya digunakan untuk mencipta tika baharu.

Atas ialah kandungan terperinci Adakah \'(fungsi () { }) ()\' dan \'(fungsi () { })()\' Secara Fungsinya Sama dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!