次の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
。なんで?