各関数の先頭にすべてのローカル変数を定義するvarステートメントを配置することをお勧めします。次のコードは、変数が使用された後のvarが未定義になるため、これが良いアイデアである理由を示しています。
しかし、なぜこれが当てはまるのか誰かに教えてもらえますか?
<html>
<head>
<script type="text/javascript">
window.onload = function() {
var a=1;
function foo() {
//a = 2; //outputs 2,2 because this overwrites the external variable value
//var a = 2; //outputs 2,1 because the "var" keyword creates a second variable with local scope which doesn't affect the external variable
console.log(a);
var a = 3; //ouputs "undefined,1" ???
}
foo();
console.log(a);
};
</script>
</head>
<body>
</body>
</html>