Rumah > Artikel > hujung hadapan web > Perbezaan Antara New Function() dan new function() dalam JavaScript
JavaScript sememangnya fleksibel, tetapi ia juga membawa sedikit kekeliruan. Contohnya, anda boleh menggunakan pelbagai cara untuk melakukan perkara yang sama, seperti mencipta fungsi, objek, dsb. Jadi apakah perbezaan antara kedua-dua yang disebut dalam tajuk?
Fungsi baharu ialah satu lagi cara untuk mencipta fungsi, sintaksnya:
fungsi const = Fungsi baharu ([arg1, arg2, ...argN], functionBody);
Contoh mudah:
const sum = new Function('a', 'b', 'return a + b'); sum(1 + 2); // 3
Nah, ini memberikan fleksibiliti yang hebat. Ia tidak biasa, tetapi terdapat beberapa kes di mana ia boleh digunakan. Sebagai contoh, kita boleh menggunakannya apabila kita perlu menyusun templat secara dinamik ke dalam fungsi, yang mana Vue.js lakukan setakat yang saya tahu. Selain itu, ia juga boleh digunakan jika kita perlu menerima rentetan kod daripada pelayan untuk mencipta fungsi secara dinamik.
Mari kita bercakap dengan cepat tentang ciri-cirinya. Lihat apakah kod di bawah akan keluarkan?
globalThis.a = 10; function createFunction1() { const a = 20; return new Function('return a;'); } function createFunction2() { const a = 20; function f() { return a; } return f; } const f1 = createFunction1(); console.log(f1()); // ? const f2 = createFunction2(); console.log(f2()); // ?
Jawapannya ialah 10 dan 20. Ini kerana Fungsi baharu sentiasa mencipta fungsi dalam skop global. Hanya pembolehubah global dan pembolehubah setempat mereka sendiri boleh diakses semasa menjalankannya.
Manakala new function() bertujuan untuk mencipta objek baharu dan menggunakan fungsi tanpa nama sebagai pembina. Seperti contoh berikut:
const a = new (function () { this.name = 1; })(); console.log(a); // { name: 1 }
Itu sahaja. Sebenarnya, setiap fungsi JavaScript ialah objek Fungsi, dengan kata lain, (fungsi () {}).pembina === Fungsi mengembalikan benar.
Titik pengetahuan yang berkaitan ialah cara menggunakan Function() baharu untuk mencipta fungsi tak segerak? MDN memberi kami jawapan:
// Since `AsyncFunction` is not a global object, we need to get it manually: const AsyncFunction = (async function () {}).constructor; const fetchURL = new AsyncFunction('url', 'return await fetch(url);'); fetchURL('/') .then((res) => res.text()) .then(console.log);
Jika anda mendapati ini membantu, sila pertimbangkan melanggan surat berita saya untuk lebih banyak artikel dan alatan berguna tentang pembangunan web. Terima kasih kerana membaca!
Atas ialah kandungan terperinci Perbezaan Antara New Function() dan new function() dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!