我想对于大多数人来说,这确实是一个非常简单的问题。但是我很难解决这个循环问题。 arguments.length -1中的-1代表什么?这是最后一项吗?而i-即要减少1?
var plus = function() {
var sum = 0;
for (var i = arguments.length - 1; i >= 0; i--) {
sum += arguments[i];
}
return sum;
}
console.log(plus(2,2,3,657,5643,4465,2,45,6));
答案 0 :(得分:1)
- 1
的意思是从1
中减去arguments.length
。 i--
意味着将i
减少1。
答案 1 :(得分:1)
您需要在这里了解两件事:
arguments
是一种object
类型,因此它具有key-value
对值,您可以将它们作为参数传递给函数。此外,arguments
对象不是数组。它类似于Array
,但除Array
外没有任何length
属性。key
的{{1}}始终以arguments
开头,并以小于参数长度的一个值结束。请参见下面的示例,0
以key
结尾,因此您进行了8
,以便获得arguments.length - 1
而不是8
。由于您正在循环考虑9
中的最后一个值,因此您进行了arguments
。
--i
或者,您也可以将var plus = function() {
console.log(arguments);
console.log(typeof arguments);
var sum = 0;
for (var i = arguments.length - 1; i >= 0; i--) {
sum += arguments[i];
}
return sum;
}
console.log(plus(2, 2, 3, 657, 5643, 4465, 2, 45, 6));
设置为
i++
答案 2 :(得分:1)
调用 arguments.length 时,它将返回您使用 arguments [arguments.length-1] 访问的最后一个元素的数量,因为计数从0开始。 (第一个元素的访问方式与此参数[0]相同。)
以下是关于Java的很好的文档,但是对于JavaScript来说是相同的:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
是的,i--将i减少1。这与i--和--i不同。
在操作数之后使用++ /-
在操作数之后使用递增/递减运算符时,将在增加/减小操作数之前返回该值。
查看此示例:
// Increment
let a = 1;
console.log(a++); // 1
console.log(a); // 2
// Decrement
let b = 1;
console.log(b--); // 1
console.log(b); // 0
当我们第一次注销a或b的值时,两个值都没有改变。这是因为在更改操作数之前,将返回操作数的原始值。下次使用运算符时,我们得到+1或-1的结果。
在操作数之前使用++ /-
如果您希望在返回之前使变量递增/递减,则只需在操作数之前使用递增/递减运算符即可:
// Increment
let a = 1;
console.log(++a); // 2
console.log(a); // 2
// Decrement
let b = 1;
console.log(--b); // 0
console.log(b); // 0
如您在上面的示例中看到的那样,但是在变量之前使用++或-,该操作执行并在返回之前加/减1。这使我们可以立即注销并查看结果值。