


Bila hendak menggunakan `eval()` lwn. `new Function()` dalam JavaScript: Apakah Perbezaan Utama?
Nov 02, 2024 am 03:16 AMMeneroka Perbezaan Antara eval() dan Function() baharu
Dalam JavaScript, eval() dan Function() kedua-duanya membenarkan pelaksanaan kod dinamik. Walau bagaimanapun, ia berbeza dengan ketara dalam mekanisme dan skop asasnya.
eval()
eval() menilai rentetan sebagai ungkapan JavaScript dalam skop pelaksanaan semasa. Ini bermakna ia mempunyai akses kepada pembolehubah tempatan dalam skop tempat ia dipanggil.
Fungsi baharu()
Fungsi baharu() menghuraikan rentetan kod JavaScript ke dalam fungsi objek. Fungsi ini kemudiannya dipanggil dan kodnya dilaksanakan dalam skop yang berasingan. Ia tidak mempunyai akses kepada pembolehubah tempatan di luar skop ini.
Perbezaan Praktikal
Pertimbangkan contoh berikut:
var evaluate = function(string) { return eval('(' + string + ')'); } var func = function(string) { return (new Function( 'return (' + string + ')' )()); } console.log(evaluate('2 + 1')); console.log(func('2 + 1'));
Kedua-duanya menilai( ) dan func() akan mengembalikan hasil ungkapan aritmetik '2 1'. Walau bagaimanapun, jika kod berikut akan dilaksanakan dalam fungsi:
var a = 11; evaluate('a = 22');
Nilai a akan ditukar kepada 22 kerana eval() menggunakan skop pelaksanaan semasa. Sebaliknya, jika func() digunakan sebaliknya, nilai a akan kekal tidak berubah kerana ia beroperasi dalam skop yang berasingan.
Pertimbangan Penggunaan
Sementara eval() dan Function() baharu boleh berguna dalam senario tertentu, ia harus digunakan dengan berhati-hati kerana risiko keselamatan dan potensi akibat yang tidak diingini. Menilai data yang tidak dipercayai boleh mendedahkan kelemahan dan kedua-dua fungsi boleh mencipta objek global yang boleh mencemarkan skop global.
Secara amnya, adalah disyorkan untuk mengelak daripada menggunakan eval() dan Function() baharu melainkan benar-benar perlu. Sebaliknya, pertimbangkan alternatif yang lebih selamat seperti fungsi tersuai atau menggunakan sintaks alternatif eval() (eval("1 1")).
Atas ialah kandungan terperinci Bila hendak menggunakan `eval()` lwn. `new Function()` dalam JavaScript: Apakah Perbezaan Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ganti aksara rentetan dalam javascript

Tutorial Persediaan API Carian Google Custom

8 plugin susun atur halaman jquery yang menakjubkan
