<script>
name = "Tim";
function greet() {
console.log(name);
var name = "David" ;
}
greet();
</script>
为什么结果显示“未定义”?我期待蒂姆或大卫。
<script>
name = "Tim";
function greet() {
console.log(name);
var name = "David" ;
}
greet();
</script>
为什么结果显示“未定义”?我期待蒂姆或大卫。
您声明的第一个“名称”是一个全局变量。在函数内部,您再次声明它,因此您失去了全局函数的可见性。但是您在定义变量之前使用它。
name = "Tim"; // global name here
function greet() {
// var name; // here name is automatically declared ( because of hoisting ) but undefined
console.log(name); // here you use name before it is defined
var name = "David" ; // here name is defined
}
greet();
Javascript 在函数中有作用域,这很重要。谷歌的“javascript提升”会有所帮助。
改成这样,
var name = "Tim";
function greet() {
console.log(name);
name = "David" ;
}
greet();