Rumah  >  Artikel  >  hujung hadapan web  >  Penjelasan terperinci tentang penggunaan fungsi eval() dalam kemahiran JavaScript_javascript

Penjelasan terperinci tentang penggunaan fungsi eval() dalam kemahiran JavaScript_javascript

WBOY
WBOYasal
2016-05-16 15:25:541392semak imbas

Fungsi

eval() menilai rentetan JavaScript dan melaksanakannya sebagai kod skrip.

Jika hujah ialah ungkapan, fungsi eval() akan melaksanakan ungkapan tersebut. Jika hujah ialah pernyataan Javascript, eval() akan melaksanakan pernyataan Javascript.

Tatabahasa

Salin kod Kod adalah seperti berikut:

eval(rentetan)

参数 描述
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。

Penjelasan terperinci tentang penggunaan fungsi eval():

Fungsi ini mungkin tidak digunakan terlalu kerap, tetapi ia mempunyai kesan yang hebat dalam beberapa kes Berikut ialah pengenalan kepada penggunaan fungsi eval().

Fungsi ini boleh menerima str rentetan sebagai parameter, dan laksanakan str ini sebagai sekeping kod javascript Jika hasil pelaksanaan str ialah nilai, ia akan mengembalikan nilai ini, jika tidak, ia akan kembali tidak ditentukan. Jika parameter bukan rentetan, parameter dikembalikan secara langsung Contohnya adalah seperti berikut:

eval("var a=1");//声明一个变量a并赋值1。
eval("2+3");//执行加运算,并返回运算值。
eval("mytest()");//执行mytest()函数。
eval("{b:2}");//声明一个对象。

Perhatian khusus harus diberikan kepada kod di atas Pernyataan terakhir mengisytiharkan objek Jika anda ingin mengembalikan objek ini, anda perlu meletakkan lapisan kurungan lain di luar objek, seperti berikut:

Salin kod Kod adalah seperti berikut:

eval("({b:2})");

Kandungan di atas secara ringkas memperkenalkan penggunaan fungsi eval(), yang agak mudah difahami. Perkara yang paling mengelirukan tentang fungsi ini ialah skopnya. Mari kita perkenalkan kandungan yang berkaitan dengan contoh

function a(){ 
 eval("var x=1"); 
 console.log(x); 
} 
a(); 
console.log(x); 
Dalam kod di atas, fungsi alert() pertama boleh muncul 1, manakala yang kedua akan melaporkan ralat kerana x tidak ditentukan.

Ia boleh disimpulkan daripada prestasi di atas bahawa fungsi eval() tidak mencipta skop baharu, dan skopnya ialah skop di mana ia berada. Ini benar dalam semua penyemak imbas arus perdana, tetapi kadangkala perlu menetapkan skop fungsi eval() kepada skop global Sudah tentu, eval() boleh digunakan dalam skop global, tetapi dalam aplikasi sebenar, ia selalunya diperlukan untuk menggunakannya dalam skop tempatan. Menggunakan fungsi ini dengan skop global boleh dilaksanakan menggunakan window.eval().

function a(){ 
 window.eval("var x=1"); 
 console.log(x); 
} 
a(); 
console.log(x); 
Dalam kod di atas, kedua-dua pernyataan alert() boleh muncul 1 seperti biasa. Walau bagaimanapun, kaedah ini boleh dilakukan dalam penyemak imbas standard, tetapi prestasi dalam IE8 dan penyemak imbas di bawah IE8 masih sama seperti eval(), dan skop adalah skop di mana ia berada. Pada masa ini, anda boleh menggunakan window.execScript() unik pelayar IE untuk menyelesaikan masalah pelayar IE8 dan IE8. Untuk serasi dengan semua penyemak imbas utama, kod tersebut diubah suai seperti berikut:


function a(){ 
 if(window.execScript){ 
  window.execScript("var x=1"); 
 } 
 else{ 
  window.eval("var x=1"); 
 } 
 console.log(x); 
} 
a(); 
console.log(x); 
Jika penyemak imbas menyokong window.execScript(), gunakan fungsi ini Jika tidak, gunakan window.eval() Ini boleh menyelesaikan masalah IE8 dan pelayar di bawah IE8.

Kandungan di atas adalah penjelasan terperinci tentang penggunaan fungsi eval() dalam JavaScript yang dikongsi oleh editor.

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