-1

我正在阅读面向 Web 开发人员的专业 JavaScript

有什么奇怪的。

var color = "blue";

function getColor() {
    var color = "red";
    return color;
}

getColor();   // "red"

答案很明显。但是下面的解释很奇怪。“如果其中一个操作数是对象而另一个不是,则在对象上调用 valueOf() 方法以检索原始值以根据先前的规则进行比较。”

我只是不明白。很明显,无论发生什么,它都会返回本地颜色。

4

3 回答 3

0

你是绝对正确的,它总是会返回红色。这种解释虽然在技术上是正确的,但在这种情况下显得格格不入。哎呀,要记住所有这些东西而不会误入歧途已经够难的了。

于 2012-11-03T12:50:23.743 回答
0

当一个变量或函数参数在内部范围内定义时,与范围外的变量/参数同名时,该变量将覆盖另一个变量。但是一旦您返回外部范围,前一个变量仍将具有它的初始值。没有什么可以比较你的例子。它只是两个赋值和一个函数声明。

var color = ...表示正在制作一个新变量。如果我们没有关键字var,那么在调用函数时,外部作用域中的变量将color具有更改的值。但是我们只是创建了一个局部范围的变量,一个不会干扰另一个。

于 2012-11-03T12:51:08.073 回答
0

你的代码是这样的

var color = "blue";

function getColor() {
    var color = "red";
    return color;
}

getColor();   // "red"

如果您从函数调用,答案颜色变量将始终包含红色,因为它是本地声明和定义的。

但是在调用函数之后,如果你想得到颜色的值,那么它的值就会变成蓝色。

于 2013-12-12T06:07:34.560 回答