次の2つのJavaScriptスニペットについて考えてみます。
var x = 2;
function f() {
var y = x;
eval('var x;');
return y;
}
対。
var x = 2;
function f() {
var y = x;
var x;
return y;
}
唯一の違いは、私がに置き換えeval('var x;');たことvar x;です。
最初のものはを返します2が、2番目のものはを返しますundefined。なんで?