var foo = (function(){
var x = "bar";
return function(){
console.log(x);
};
})();
console.log(foo.toString()); // function() {console.log(x);}
(foo)(); // 'bar'
eval('(' + foo.toString()+')()')); // error: x is undefined
varが のようにx
記録され"bar"
ないのはなぜfoo.toString()
ですか?
foo
その toString() 値と一致しない動作があります。foo
常に「バー」を出力しますが、見ただけでfoo.toString()
はわかりません。
これに関連していますか?関数を逆コンパイルしてその toString() 値を取得しないという決定が下された場合、外部関数のスコープに依存するオブジェクトの解決を含めてみませんか?
逆コンパイルの古い方法を使用して、特定の関数の背後にある実際のコードを取得する方法はありますか?