javascript - 关于eval的一些疑问
PHP中文网
PHP中文网 2017-04-10 16:41:11
[JavaScript讨论组]
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是能正确被赋值的。

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
怪我咯
var a = eval("(function foo(){return ('../assets/a.png')})")
console.log(a);

eval(string)

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

迷茫

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

var funcString = "(function(){
    return function(){
        return ('../assets/a.png');
    };
})()";
var a = eval(funcString );
高洛峰

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调用出来。
但是具体的还不太清楚,希望对你有帮助。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号