Rumah  >  Artikel  >  hujung hadapan web  >  Perbezaan Antara New Function() dan new function() dalam JavaScript

Perbezaan Antara New Function() dan new function() dalam JavaScript

WBOY
WBOYasal
2024-09-10 22:33:321138semak imbas

Difference Between new Function() and new function() in 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!

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