-
11.1 不要用遍历器。用JavaScript高级函数代替
for-in
、for-of
。 eslint: no-iterator no-restricted-syntaxWhy? 这强调了我们不可变的规则。 处理返回值的纯函数比副作用更容易。
Why? 用数组的这些迭代方法:
map()
/every()
/filter()
/find()
/findIndex()
/reduce()
/some()
/ … , 用对象的这些方法Object.keys()
/Object.values()
/Object.entries()
去产生一个数组, 这样你就能去遍历对象了。const numbers = [1, 2, 3, 4, 5]; // bad let sum = 0; for (let num of numbers) { sum += num; } sum === 15; // good let sum = 0; numbers.forEach(num => sum += num); sum === 15; // best (use the functional force) const sum = numbers.reduce((total, num) => total + num, 0); sum === 15; // bad const increasedByOne = []; for (let i = 0; i < numbers.length; i++) { increasedByOne.push(numbers[i] + 1); } // good const increasedByOne = []; numbers.forEach(num => increasedByOne.push(num + 1)); // best (keeping it functional) const increasedByOne = numbers.map(num => num + 1);
-
12.1 访问属性时使用点符号. eslint: dot-notation
const luke = { jedi: true, age: 28, }; // bad const isJedi = luke['jedi']; // good const isJedi = luke.jedi;
-
12.2 当获取的属性是变量时用方括号
[]
取const luke = { jedi: true, age: 28, }; function getProp(prop) { return luke[prop]; } const isJedi = getProp('jedi');