次の 2 つの小さなスクリプトがあります。
スクリプト 1:
eval("local = 3;");
console.log(typeof local);
Function("console.log(typeof local);")();
出力:
number
number
スクリプト 2:
eval("var local = 3;");
console.log(typeof local);
Function("console.log(typeof local);")();
出力:
number
undefined
何を与える?var local = 3
渡された文字列に aまたは aが含まれているかどうかに関係なく、eval は local をグローバル名前空間に配置する必要がありlocal = 3
ます。Function(...)
その場合、2 番目のケースでは local の型が number であり、未定義ではないことがわかりませんか?
編集1:
JSFiddle で両方のスクリプトを実行した結果が得られました。ただし、JSFiddle の外部でそれらを実行すると、両方の出力が次の場所で期待される結果が得られます。
number
number