Adakah Fungsi Tanpa Nama dengan Sintaks Berbeza Berkelakuan Berbeza dalam JavaScript Apabila Digabungkan dengan Pengubah Suai?

Susan Sarandon
Lepaskan: 2024-10-30 15:17:02
asal
849 orang telah melayarinya

Do Anonymous Functions with Different Syntax Behave Differently in JavaScript When Combined with Modifiers?

Adakah Fungsi Tanpa Nama dengan Sintaks Berbeza Secara Fungsinya Sama Dalam JavaScript?

Dalam JavaScript, kedua-duanya (function() { })() dan ( function() { }()) mungkin kelihatan melakukan tugas yang sama dengan memaparkan "foo" dan "bar" berturut-turut. Walau bagaimanapun, dalam keadaan tertentu, terdapat perbezaan yang ketara antara kedua-dua sintaks ini.

Kod Blok 1:

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

alert(bar);
Salin selepas log masuk

Kod Blok 2:

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

alert(bar);
Salin selepas log masuk

Setara Dari segi Fungsi

Jika tiada sebarang pengubahsuaian, kedua-dua blok kod adalah setara dari segi fungsi. Mereka mencipta fungsi tanpa nama, melaksanakannya serta-merta, dan kemudian mengakses pembolehubah bar yang ditakrifkan dalam fungsi tersebut.

Perbezaan dengan Pengubahsuaian

Walau bagaimanapun, jika anda memperkenalkan pengubahsuai sedemikian sebagai baharu sebelum fungsi memanggil atau menambah sesuatu selepasnya, tingkah laku berubah.

Kod Blok 1 dengan baharu dan .prop:

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

Kod ini mencipta contoh baharu bagi fungsi tanpa nama dan mengakses harta propnya. Ia mengembalikan 4.

Kod Blok 2 dengan baharu dan .Kelas:

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

Sebaliknya, kod ini memanggil baharu pada sifat Kelas. Disebabkan kurungan tambahan di dalam kurungan luar, panggilan fungsi bukan sebahagian daripada ungkapan baharu. Ia sebaliknya memanggil fungsi secara normal dan mengembalikan nilai pulangannya, yang merupakan contoh kelas.

Ringkasnya, manakala kedua-dua (function() { })() dan (function() { }()) adalah berfungsi setara dalam keadaan biasa, ia berkelakuan berbeza apabila digabungkan dengan pengubah suai yang mempengaruhi cara ia dilaksanakan.

Atas ialah kandungan terperinci Adakah Fungsi Tanpa Nama dengan Sintaks Berbeza Berkelakuan Berbeza dalam JavaScript Apabila Digabungkan dengan Pengubah Suai?. 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!