说道Json,咱们先来聊聊evaljavascript
1、eval是什么?(解析器)java
eval是一个函数,看本质function eval() { [native code] }express
2、怎样使用eval?json
语法:string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。经过计算 string 获得的值(若是有的话)安全
该方法只接受原始字符串做为参数,只接受一个参数函数
若是 string 参数不是原始字符串,那么该方法将不做任何改变地返回。spa
所以请不要为 eval() 函数传递 String 对象来做为参数。而应该是对象(code
若是参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。对象
若是非法调用 eval(),则抛出 EvalError 异常。ip
若是传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。
)
第一个例子: console.log(eval("1212")); //输出结果为1212;
第二个例子: var msg="hello worle";
eval("alert(msg)");// 输出:hello world 传入参数当作实际的ECMAScript语句来执行;
至关于:alert(msg);
第三个例子:eval定义一个函数;
eval("function sayHi(){alert('hello wold')}");
sayHi(); //输出的结果是hello world (运行机制:在解析代码的时候,它们包含在一个字符串中,它们只在eval()执行的时候的建立)
3、eval(”(执行的内容)”);加上圆括号的目的是迫使eval函数在运行JavaScript代码的时候强制将括号内的表达式转化为对象,而不是做为语句(statement)来执行
例如对象字面量{},如若不加外层的括号,eval会将大括号识别为JavaScript代码块的开始和结束标记,
那么{}将会被认为是执行了一句空语句。因此下面两个执行结果是不一样的:
4、eval很强大,可是一样也有弊端
(1)eval方法是在运行时对脚本进行解释执行,而普通的javascript会有一个预处理的过程。
(2)eval一般用在一些须要动态执行字符串,或将字符串转为javascript对象的场景,好比将json字符串转为javascript对象。)
(3)安全隐患
虽然 eval() 的功能很是强大,但在实际使用中用到它的状况并很少《结束》