<script>
name = "Tim";
function greet() {
console.log(name);
var name = "David" ;
}
greet();
</script>
为什么结果显示“未定义”?我期待蒂姆或大卫。
答案 0 :(得分:3)
您声明的第一个“名称”是全局变量。 在函数内部,您再次声明它,因此您将失去全局函数的可见性。但是在定义之前使用变量。
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 hoisting'会有所帮助。
答案 1 :(得分:1)
像这样变色,
var name = "Tim";
function greet() {
console.log(name);
name = "David" ;
}
greet();