JS eval()函数的一些见解

一、eval是基本使用规则

一、eval是基本使用规则

  • 1 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
  • 2 eval(string)
  • 3 string必需。要计算的字符串,其中含有要计算的
    JavaScript 表达式或要执行的语句。
  • 4 eval()只有一个参数。
  • 5 eval使用比较不安全,忘慎重使用

var txt = ‘{ “employees” : [‘ +
‘{ “firstName”:”Bill” , “lastName”:”Gates” },’ +
‘{ “firstName”:”George” , “lastName”:”Bush” },’ +
‘{ “firstName”:”Thomas” , “lastName”:”Carter” } ]}’;

<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
威尼斯网址开户网站,<title>Document</title>
</head>
<body>
<style>
*{margin:2px;}
#text #inputText{ width:150px; height:40px; border:#06C 1px solid
;margin: 0 auto;}
#numValue { text-align: center; }
#cos {text-align: center;}
input{width:30px;height:30px;}

  • 作用:将字符串转换成可执行的JS代码。
  • 场景使用1:
    这是一个数组用“+”连接转换成的字符串再转换成代码执行求和的例子。

•1 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

二、eval的错误使用方法

  • 1 如果传入的参数不是字符串,它直接返回这个函数。
  • 2
    如果参数是字符串,它会把字符串当成JavaScript代码进行编译,如果编译失败者抛出一个语法错误异常。
  • 3
    如果编译成功,则开始执行这一段代码,并返回字符串中的最后一个表达式或语句的值,
  • 4
    如果最后一个表达式或语句没有值,则最终返回undefined。

JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

</style>
<body>
<div id=”text”>
<div id=”inputText”></div>
<div id=”cos”></div>
<div id=”numValue”></div>
</div>
<script>
var
arr=[‘1′,’2′,’3′,’+’,’4′,’5′,’6′,’-‘,’7′,’8′,’9′,’*’,’0′,’00’,’=’,’/’,’AC’];
for(var i=0,str=[];i<17;i++){
if(i%4==3){
str.push(“<input type=’button’ value='”+arr[i]+”‘/>” +
“</br>”)
}
else{
str.push(“<input type=’button’ value='”+arr[i]+”‘/>”)
}
}
var inputText = document.getElementById(‘inputText’)
var numValue = document.getElementById(‘numValue’)
numValue.innerHTML= str.join(”)
for(var j=0;j<17;j++){
document.getElementsByTagName(“input”)[j].id=j;
document.getElementsByTagName(“input”)[j].onclick=function(){
if(this.id==14){
var cos = document.getElementById(‘cos’)
cos.innerText = inputText.innerHTML+”=”+eval(inputText.innerHTML)
inputText.innerText=eval(inputText.innerHTML)

•2 eval(string)

三、使用例子

<!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>

  我自己查了好多资料,也还很模糊,希望了解的大神能指点指点!

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成
JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误

}
else if(this.id==16){inputText.innerHTML=”}
else inputText.innerHTML+=this.value;
}}
</script>

var arr = [1, 2, 3, 4, 5];
var total = eval(arr.join("+"));
console.log(total);  // --> 15

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

var obj = eval (“(” + txt + “)”);

</body>
</html>

步骤解析:

•4 eval()只有一个参数。

使用: obj.employees[1].firstName 为 George

1)var str = arr.join("+");  //-->  "1+2+3+4+5"

2)eval(str);  //-->  eval("1+2+3+4+5")

3)var total = 1+2+3+4+5;  //-->15

•5 eval使用比较不安全,忘慎重使用

  • 场景使用2:
    将Json格式的字符串转换为Json格式的对象。在window浏览器对象下,有个JSON属性,提供了parse和stringify两个方法,但是这个JSON属性在IE
    6-7下没有,所以使用时应做兼容处理,以下是处理parse这个方法。

二、eval的错误使用方法

•1 如果传入的参数不是字符串,它直接返回这个函数。

function toJson(jsonStr){
    var jsonObj = null;
    try{
        jsonObj = JSON.parse(jsonStr);
    }catch(e){
        jsonObj = eval("("+ jsonStr +")");
    }
    return jsonObj;
}
var str = '{"name":"zzq"}';
console.log(toJson(str));  //-->Object {"name": "zzq"} 

•2
如果参数是字符串,它会把字符串当成JavaScript代码进行编译,如果编译失败者抛出一个语法错误异常。

注意:

•3
如果编译成功,则开始执行这一段代码,并返回字符串中的最后一个表达式或语句的值,

 jsonObj = eval("("+ jsonStr +")");

•4 如果最后一个表达式或语句没有值,则最终返回undefined。

不能写成 jsonObj = eval( jsonStr );
因为在使用eval来解析json格式字符串的时候,会将“{
}”解析为代码块,而不是字面量。所以需要添“()”来避免这种情况。

三、使用例子

<!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>

我自己查了好多资料,也还很模糊,希望了解的大神能指点指点!

以上这篇对js
eval()函数的一些见解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
  • JavaScript中eval函数的问题
  • JavaScript中eval()函数用法详解
  • javascript中eval函数用法分析
  • JavaScript中的eval()函数使用介绍
  • JavaScript eval()
    函数介绍及应用示例
  • JavaScript中的eval()函数详解
  • JS中eval函数的使用示例

相关文章