JavaScript表达式计算 eval

来源:互联网 发布:淘宝一元起拍靠谱吗 编辑:程序博客网 时间:2024/06/04 18:59

JavaScript可以解释运行由JavaScript源代码组成的字符串,并产生一个值。JavaScript通过全局函数eval()来完成这个工作。

举例:

eval("3+2")   //=> 5

问题解答:eval()是一个函数还是一个运算符?

答:是一个函数,但已经被当做运算符来使用对待。

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

关于eval最重要的是 它使用了调用它的变量作用域环境。也就是说 它查找变量的值和定义新变量的操作和局部作用域中的代码完全一样。如果一个函数定义了一个局部变量x,然后调用eval("x") 它会返回局部变量的值。如果他调用eval("x=1") 它会改变局部变量的值。如果函数调用了eval("var y=3;") ,它声明一个新的局部变量y。同样的 一个函数可以通过如下代码声明一个局部函数:

eval("function f(){return x+1;}");

如果在最顶层代码中调用eval() 当然 它会作用于全局变量和全局函数。

1 0