像这样,如果我做了一个函数:
function a() {
alert("Hello!")
}
我不希望您能够查看以下代码:
eval(a)
返回所有代码,但
eval(a())
返回警报
在执行 eval(a) 时,我希望它不返回代码,只是什么都不返回?
像这样,如果我做了一个函数:
function a() {
alert("Hello!")
}
我不希望您能够查看以下代码:
eval(a)
返回所有代码,但
eval(a())
返回警报
在执行 eval(a) 时,我希望它不返回代码,只是什么都不返回?
始终将您的代码封装在 IIFE(立即调用函数表达式)中,这样您就不会将变量泄漏到全局范围:
(function(){
function a() {
alert("Hello!")
}
// more stuff...
}());
console.log(eval(a)); //=> Uncaught ReferenceError: a is not defined
您还可以使用一个小技巧来隐藏功能代码bind
:
var a = function a() {
alert("Hello!")
}.bind();
console.log(eval(a)); //=> function () { [native code] }
每当您考虑使用eval
时,请三思而后行,可能有更好的方法来做到这一点。如果您只想运行该功能,只需执行a()
. 不需要eval
那里。