JS eval()函數的一些見解


一、eval是基本使用規則

  • 1 eval() 函數可計算某個字符串,並執行其中的的 JavaScript 代碼。
  • eval(string)
  • 3 string必需。要計算的字符串,其中含有要計算的 JavaScript 表達式或要執行的語句。
  • 4 eval()只有一個參數。
  • 5 eval使用比較不安全,忘慎重使用

二、eval的錯誤使用方法

  • 1 如果傳入的參數不是字符串,它直接返回這個函數。
  • 2 如果參數是字符串,它會把字符串當成JavaScript代碼進行編譯,如果編譯失敗者拋出一個語法錯誤異常。
  • 3 如果編譯成功,則開始執行這一段代碼,並返回字符串中的最后一個表達式或語句的值,
  • 4 如果最后一個表達式或語句沒有值,則最終返回undefined。

三、使用例子

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>eval</title>
	</head>
	<body>		
		
		<script type="text/javascript">

             //正確輸入
                var x = 10;
                document.write(eval(10*x + 10)) //表達式 輸出110
                document.write("<br />");
                document.write(eval("10 == x")); //表達式 輸出true
                document.write("<br />");
			    eval(document.write(2+5*x));   //執行語句 輸出52
  
            //非正常輸入
             try{
             	var y = 8;
			    //表達式
			    document.write(eval("9+6*x"+"100"));  //如果參數中沒有合法的表達式和語句,則拋出 SyntaxError 異常。
			    document.write("<br />");  
                eval('++++2');     //編譯失敗ReferenceError異常
                eval(document.write(2+2)); //編譯成功
                document.write(eval());   //返回undefined

               var my = eval();             //如果試圖覆蓋 eval 屬性或把 eval() 方法賦予另一個屬性,
               document.write(my(1+2));    //並通過該屬性調用它,則 ECMAScript 實現允許拋出一個 EvalError 異常。
               
                }
    
			 catch(exception) {
               alert(exception);
             }
			 
		</script>
		
	</body>
</html>

  我自己查了好多資料,也還很模糊,希望了解的大神能指點指點!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM