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

WBOY
Lepaskan: 2024-09-10 22:33:32
asal
1026 orang telah melayarinya

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
Salin selepas log masuk

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()); // ?
Salin selepas log masuk

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 }
Salin selepas log masuk

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);
Salin selepas log masuk

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!

sumber:dev.to
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
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!