我试图了解以下java脚本代码的工作原理。我有一个名为color的全局变量,用于存储' blue&#39 ;;我正在调用printColor(),它可以简单地打印颜色。 我不明白的是当我在函数中定义一个名为color的新局部变量时,为什么颜色未定义。如果取消注释下面的本地颜色变量声明, 颜色未定义。
var color = 'blue';
printColor();
function printColor(){
document.write(color);
//var color = "green";
}
答案 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的工作方式。我不知道为什么会这样。