有人可以证实这个理论是否正确吗? - Javascript&数组

时间:2011-09-16 02:51:19

标签: javascript arrays if-statement var

我正在学习javascript并且刚开始 - 我正在使用Firefox中的Firebug扩展来尝试一些事情。

我设置了2个var(iables),第2个使用了第一个的值:

var multipleValues =  [10,20,30,40,50] ;
var reverse = multipleValues.reverse();`

现在我想通过if语句从该数组中提取数据并创建如下警告:

if (multipleValues [1] == 20) {
alert("Value is there.");
}
else {
alert("Value is not there");
}

现在我的问题是 - 当我运行这样的代码时,为什么它会给我“else”选项,但是当我注释掉var reverse时它出现了正确的结果?

我想,因为我在开始时声明了变量,我可以在以后访问它,但是使用反向选项似乎取消了它?我误解了理论吗?

干杯

3 个答案:

答案 0 :(得分:3)

The reverse method修改数组(同时返回数组)。尝试这样的事情:

var reversed = multipleValues.slice(0).reverse();

答案 1 :(得分:2)

reverse()将数组反转到位。

var x = [1,2,3];
x.reverse();
console.log(x); //Now returns [3,2,1]

因此,不是将原始数组保持不变,而是将其反转。它返回反转数组的值,因此multipleValuesreverse都设置为反转值。

JavaScript可能不一致。一些本机方法不会修改调用者,而是返回值(比如,String.prototype.split)。某些本机方法修改调用方并且不返回相关值(Array.prototype.splice是一个示例)。一些本地方法,如此Array.prototype.reverse,同时执行这两种方法。

一种可靠的方法,可以知道哪些内容可以阅读文档;我推荐Mozilla Developer Network,其中描述了reverse()

  

reverse方法转置调用数组对象的元素   就地,改变数组,并返回对数组的引用。

答案 2 :(得分:2)

Array.reverse()具有破坏性,可以更改原始数组。它还返回对数组的引用,因此两个对象应该彼此相等。

相关问题