有关-1和i的简单for循环问题

时间:2018-08-20 13:36:08

标签: javascript

我想对于大多数人来说,这确实是一个非常简单的问题。但是我很难解决这个循环问题。 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));

3 个答案:

答案 0 :(得分:1)

- 1的意思是从1中减去arguments.lengthi--意味着将i减少1。

答案 1 :(得分:1)

您需要在这里了解两件事:

  1. arguments是一种object类型,因此它具有key-value对值,您可以将它们作为参数传递给函数。此外,arguments对象不是数组。它类似于Array,但除Array外没有任何length属性。
  2. key的{​​{1}}始终以arguments开头,并以小于参数长度的一个值结束。请参见下面的示例,0key结尾,因此您进行了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]相同。)

enter image description here

以下是关于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。这使我们可以立即注销并查看结果值。