0

このように、関数を作成した場合:

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

次のようなコードを表示できるようにしたくありません。

    eval(a)

すべてのコードを返しますが、

    eval(a())

アラートを返します

eval(a) を実行するときに、コードを返さないようにしたいのですが、どうすればいいですか?

4

1 に答える 1

0

変数をグローバル スコープに漏らさないように、常にコードを IIFE (Immediately Invoked Function Expression) にカプセル化します。

(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 に答える