关于eval的一些疑问

发布于 2022-09-01 23:38:06 字数 446 浏览 12 评论 0

var a = eval("()=>{return ('../assets/a.png')}")
console.log(a); // function ()=>{return ('../assets/a.png')}
var a = eval("function(){return ('../assets/a.png')}")
//Uncaught SyntaxError: Unexpected token (因为不能直接生成匿名方法)
var a = eval("function foo(){return ('../assets/a.png')}")
console.log(a); // undefined

第三个我就不太懂了,什么eval之后a是undefined呢?而第一个eval的a是能正确被赋值的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

醉生梦死 2022-09-08 23:38:06
var a = eval("(function foo(){return ('../assets/a.png')})")
console.log(a);

eval(string)

返回值:通过计算 string 得到的值(如果有的话)

茶花眉 2022-09-08 23:38:06

如果要把动态的function给一个变量,需要用 ()把函数括起来。或者你写个闭包

var funcString = "(function(){
    return function(){
        return ('../assets/a.png');
    };
})()";
var a = eval(funcString );
不再让梦枯萎 2022-09-08 23:38:06

eval我记得是将字符串当代码去执行。

所以说

eval("function foo(){return ('../assets/a.png')}")

就相当于是在console中执行下面的代码,

function foo(){return ('../assets/a.png')}

这只是定义一个function,所以没有任何的返回值,所以log就会打出undefined。

至于你第一个

()=>{return ('../assets/a.png')}

我大概查了一下,说这个()=>是Chrome的commandLineAPI,
你执行上面那个代码,在console中执行 $_ 就能把刚刚定义的function调用出来。
但是具体的还不太清楚,希望对你有帮助。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文