博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eval函数
阅读量:3903 次
发布时间:2019-05-23

本文共 1127 字,大约阅读时间需要 3 分钟。

  • 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 42eval(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 undefinedvar fct2 = eval(fctStr2)  // return a function​​​​​​

转载地址:http://ofaen.baihongyu.com/

你可能感兴趣的文章
深入理解Mysql索引底层数据结构与算法
查看>>
B+tree结构详解
查看>>
B+树算法在mysql中能存多少行数据?
查看>>
【vue学习】—条件判断、循环遍历
查看>>
【vue学习】—slot插槽的使用
查看>>
【vue学习】—前端模块化
查看>>
STM32 外部中断
查看>>
STM32 PWM
查看>>
STM32 PWM波驱动模拟舵机(库函数版)
查看>>
STM32——ADC
查看>>
破解百度网盘屏蔽文件分享失效被和谐的独家秘籍
查看>>
STM32F10X_XX宏定义的选择
查看>>
在头文件声明全局变量和创建extern
查看>>
stm32 USART 串口通信[操作寄存器+库函数]
查看>>
MATLAB画图常用调整代码
查看>>
WORD2010加载mathtype6.6
查看>>
TTL电平、CMOS电平、RS232电平的区别
查看>>
c语言那些细节之a+1和&a+1的区别
查看>>
交换两个变量的值,不使用第三个变量的四种法方
查看>>
STM32 产生随机数
查看>>