0
<script>
    name = "Tim";
    function greet() {
      console.log(name);
      var name = "David" ;
    }
    greet();
</script>

为什么结果显示“未定义”?我期待蒂姆或大卫。

4

2 回答 2

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提升”会有所帮助。

于 2013-06-21T06:13:40.153 回答
1

改成这样,

var name = "Tim";
function greet() {
  console.log(name);
  name = "David" ;
}
greet();
于 2013-06-21T06:12:13.923 回答