JavaScript中的eval()
eval
JavaScript中的eval()函数可以接受一个字符串作为参数,并将其中的内容视为好像在书写时就存在于程序中的这个位置的代码。换句话说,可以在你写的代码中用程序生成代码并运行,就好像代码是写在那个位置的一样。
根据这个原理来理解eval(),它是如何通过代码欺骗和假装书写时(也就是词法期)代码就在那,来实现修改词法作用域环境的,这个原理就变得清晰易懂了。
在执行eval()之后的代码时,引擎并不知道,或在意前面的代码是以动态形式插入进来的,并对词法作用域的环境进行修改的。引擎只会如往常地进行词法作用域查找。
```
function foo(str, a) {
eval( str ); // 欺骗!
console.log('a', a, 'str', str );
}
var b = 2;
foo( 1,3 ); // 1, 3
```
注:eval()和with()一样不推荐使用。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战