我读过一个好的做法是在每个函数的顶部放置一个定义所有局部变量的 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>