eval函数

  • eval() 的参数是一个字符串。如果字符串表示的是表达式,eval() 会对表达式进行求值。如果参数表示一个或多个 JavaScript 语句, 那么 eval() 就会执行这些语句。
eval("2 + 2");             // returns 4
  • 如果 eval() 的参数不是字符串, eval() 将会将参数原封不动的返回。
eval(new String("2 + 2")); // 返回了包含"2 + 2"的字符串对象String {"2 + 2"}
eval(new String("2 + 2").toString()); //返回4
  • 如果你间接的使用 eval(),比如通过一个引用来调用它,而不是直接的调用 eval 。 从 ECMAScript 5 起,它工作在全局作用域下,而不是局部作用域中。
 function test() {
  var x = 2, y = 4;
  console.log(eval("x + y"));  // 直接调用,使用本地作用域,结果是 6
  var geval = eval; // 等价于在全局作用域调用
  console.log(geval("x + y")); // 间接调用,使用全局作用域,throws ReferenceError 因为`x`未定义
  (0, eval)('x + y'); // 另一间接调用的例子
​}

更多例子

  • 使用eval
var x = 2;
var y = 39;
var z = "42";
eval("x + y + 1"); // returns 42
eval(z);           // returns 42 
  • 使用 eval 执行一串 JavaScript 语句
    如果您定义了一个或者多个值,则会返回最后一个值。没有定义,返回undefined
var x = 5;
var str = "if (x == 5) {console.log('z is 42'); z = 42; x = 420; } else z = 0;"; 
console.log('x is ', eval(str)); // z is 42  x is 420
  • eval 中函数作为字符串被定义需要括号“(”和“)”作为前缀和后缀
var fctStr1 = 'function a() {}'
var fctStr2 = '(function a() {})'
var fct1 = eval(fctStr1)  // return undefined
var fct2 = eval(fctStr2)  // return a function​​​​​​
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值