Discuss / JavaScript / rest参数编写一个sum()函数,接收任意个参数并返回它们的和,共提供了五种方式,第四种是错误示范

rest参数编写一个sum()函数,接收任意个参数并返回它们的和,共提供了五种方式,第四种是错误示范

Topic source

雏鹰

#1 Created at ... [Delete] [Delete and Lock User]
// * ========================== 1-下标遍历 ==========================================
// ! arguments: [object Arguments]
// ? retst1: 1,2,3,4
// * [Arguments] { '0': 1, '1': 2, '2': 3, '3': 4 }
// todo [ 1, 2, 3, 4 ]
// 10
function sum01(...rest1) {
  console.log(`arguments: ${arguments}`);
  console.log(`retst1: ${rest1}`);
  console.log(arguments);
  console.log(rest1);
  var a = 0;
  for (var i = 0; i < arguments.length; i++) {
    // ! a += arguments[i + ""]; 多此一举
    a += arguments[i];
  }
  return a;
}
console.log(sum01(1, 2, 3, 4));
// * ========================== 2-forEach遍历 ==========================================
// * 10
function sum02(...rest) {
  var rst = 0;
  rest.forEach(function (element) {
    rst = rst + element;
  });
  return rst;
}
console.log(sum02(1, 2, 3, 4));
// * ========================== 3-for ... of 遍历 ==========================================
function sum03(...rest) {
  var s = 0;
  for (var i of rest) {
    s += i;
  }
  return s;
}
console.log(sum03(1, 2, 3, 4));
// * ========================== 4-for ... in 错误的遍历 ==========================================
// ! 00123
function sum04(...rest) {
  console.log(rest);
  var s = 0;
  for (var i in rest) {
    s += i;
  }
  return s;
}
console.log(sum04(1, 2, 3, 4));
// * ========================== 5-for ... in 正确的遍历 ==========================================
// 0
// 1
// 1
// 2
// 2
// 3
// 3
// 4
// 10
function sum05(...rest) {
  var s = 0;
  for (var i in rest) {
    console.log(i);
    console.log(rest[i]);
    s += rest[i];
  }
  return s;
}
console.log(sum05(1, 2, 3, 4));

  • 1

Reply