javascript與許多腳本語言同樣,容許你在程序中獲取一個包含代碼的字符串而後運行它。例以下面代碼:javascript
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>避免二次評估</title> </head> <body> <script> var num1 = 5; var num2 = 6; window.onload = function(){ result = eval("num1+num2"); console.log("eval方式:"+result); var sum = new Function("arg1","arg2","return arg1+arg2"); console.log("eval方式:"+sum(num1,num2)); setTimeout("console.log('setTimeout方式:'+(num1+num2))",100); setInterval("console.log('setInterval方式:'+(num1+num2))",100); } </script> </body> </html>
在js文件中執行另外一段Javascript代碼時,須要付出二次評估的代價,首先須要判斷當前代碼是否爲正常代碼,而後再執行過程當中執行字符串中的代碼還須要進行另外一次評估,二次評估是一項性能消耗極爲昂貴的操做,與直接包含相應代碼相比須要耗費更多的時間。在平常開發中應當儘可能避免使用二次評估html