Javascript变量范围 - 变量undefined

时间:2014-06-27 04:40:23

标签: javascript

我试图了解以下java脚本代码的工作原理。我有一个名为color的全局变量,用于存储' blue&#39 ;;我正在调用printColor(),它可以简单地打印颜色。 我不明白的是当我在函数中定义一个名为color的新局部变量时,为什么颜色未定义。如果取消注释下面的本地颜色变量声明, 颜色未定义。

var color = 'blue';

printColor();

function printColor(){
  document.write(color);
  //var color = "green";
}

2 个答案:

答案 0 :(得分:3)

你在printColor()函数中重新声明变量颜色,因为声明实际上被提升到顶部,它会在函数的开头覆盖它,因此你会看到未定义的

var color = 'blue';

function printColor(){
  document.write(color);
  //var color = "green";
}
printColor();

但如果你这样做:

function printColor(){
    document.write(color); //undefined
    var color = "green";
    console.log(color); //shows green
}

答案 1 :(得分:0)

当你变色='绿色'在printColor函数中,函数中对颜色变量的任何引用都将引用局部颜色变量,无论它位于函数的哪个位置。

你试图在你的情况下写一个局部变量。这就是它未定义的原因。它是js的工作方式。我不知道为什么会这样。