js中变量声明的问题

时间:2013-06-21 06:10:07

标签: javascript

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

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

2 个答案:

答案 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();