Skip to content

Latest commit

 

History

History
84 lines (62 loc) · 2.48 KB

JavaScript Tips-2.md

File metadata and controls

84 lines (62 loc) · 2.48 KB

Table of Contents generated with DocToc

JavaScript Tips-2

使用arguments获取函数中的所有参数

arguments是一个类数组对象,代表传给一个函数的参数列表。

可以在函数内部通过arguments对象来获取其所有参数,然后通过arguments[0]这样的方法分别获取每个参数,也可以通过arguments[0] = xxx这样的形式改变参数。

要注意的是,arguments仅仅是一个类数组对象,没有数组特有的属性和方法

因此,如果要对arguments使用数组的方法,需要通过 Array.prototype.slice.call(arguments) 将它转换为数组

example

function fun() {
  let args = Array.prototype.slice.call(arguments);
  console.log(args[0]);
  fun2(...args.slice(1));
}

function fun2() {
  console.log(arguments.length);
}

fun(1,2,3,4,5);
// 1
// 4

需要提出的是,使用下面的方法无法获取arguments

// WRONG
const fun = () => {
  console.log(arguments.length);
}

使用reduce()遍历数组元素

语法一览

array.reduce(
  (preValue, currentValue[, currentIndex[, anotherArray]]) => {},
  initialValue
);

也就是说,reducer接收一个callback作为必须的参数,callback中,以上一步的value和当前value作为参数,callback的返回值则又会作为下一步callback中的preValue

除此以外,如果没有initialValue,则第一次callback时的preValue则为数组中的第一个元素

example

let array = [0, 1, 2, 3, 4];
let result = array.reduce((pre, cur) => {
  return pre + cur;
});
console.log(result); // 10;

let array2 = [0, 1, 2, 3, 4];
let result2 = array2.reduce((pre, cur) => {
  return pre + cur;
}, 10);
console.log(result2); // 20;
```