在JS中使用eval
時,我遇到了奇怪的行爲。Javascript可變捕獲
var f = function() {
var x = 10;
return function() {
eval('console.log(x);');
window['eval']('console.log(x);');
}
};
f()();
OUTPUT:
10
undefined:1
console.log(x);
^
ReferenceError: x is not defined
爲什麼使用eval
明確地捕捉x
但global['eval']
不? 即使global['eval']
未拍到x
,爲什麼在eval
之後無法看到,其中已經拍下了x
?
更好的問題是爲什麼要使用eval? eval做了不可思議的事情。最好不要管它。 –
有時候爲了遠程測試,我需要快速加載並運行我的本地代碼。不適用於生產代碼:) –
http://stackoverflow.com/a/17281213/1005215 –