学习javascript中eval()方法

发布时间:2020-04-23编辑:脚本学堂
本文介绍下,javascript中eval()方法的用法,学习下这个强大而有用的方法,有需要的朋友参考下。

分享下整个ECMAScript语言中最强大的一个方法:eval()。
eval()方法就像是一个完整的ECMAScript解析器,它只接受一个参数,即要执行的ECMAScript(或javascript)字符串。

例子:
eval("alert('hi')");
这行代码的左右等价与代码:
alert("hi");
当解析器发现代码中调用eval()方法时,它会将传入的参数当作实际的ECMAScript语句来解析,然后把执行结果插入到原位置。通过eval()执行的代码被认为是包含该次调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域链。

这意味着通过eval()执行的代码可以引用在包含环境中定义的变量。

例子:
 

复制代码 代码示例:
var msg = "hello world";
eval("alert(msg)"); //"hello world"

可见变量msg 是在eval()调用的环境之外定义的,但其中调用的alert()仍然能够显示”hello world”。
这是因为上面第二行代码最终被替换成了一行真正的代码。

也可以在eval()调用中定义一个函数,然后再在该调用的外部代码中引用这个函数:
 

复制代码 代码示例:
eval("function sayHi() { alert('hi') }");
sayHi();

显然,函数sayHi()是在eval()内部定义的。
但由于对eval()的调用最终会被替换成定义函数的实际代码,因此可以在下一行调用sayHi()。