0

像这样,如果我做了一个函数:

    function a() {
        alert("Hello!")
    }

我不希望您能够查看以下代码:

    eval(a)

返回所有代码,但

    eval(a())

返回警报

在执行 eval(a) 时,我希望它不返回代码,只是什么都不返回?

4

1 回答 1

0

始终将您的代码封装在 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那里。

于 2013-04-04T07:08:49.453 回答