几乎所有的 var
,let
,都可以用const
代替,比如常见的写法:
交换两个数:
const [b2,a2]=[a1,b1];
(通过新建两个和原来完全不同的数字)
push:
const a = [1,2,3]
const newItem = 4;
const b = [...a,newItem]
pop:
const a = [1,2,3]
const b = a.slice(0,-1)
修改键:
const a = {
key1:'foo',
key2:2333,
}
const b = { ...a, key1: 114514 }
// 尽量不要使用 a.key1 = 114514
尽量不要使用 for
循环,使用map
,reduce
等,如果真的遇到需要改变之前定义的值,则请使用 forEach
请尽量避免使用无返回值的语句,比如for
循环,if
语句,switch
语句等,因为这些语句起效果都会导致之前的定义的值的变化,也就是改变之前定义的东西的值。多使用三元表达式等。
请控制每个函数的工作指责,当一个函数的逻辑,不能用简单的一句话说清楚时候,请拆分函数。
当一个语句,需要一些额外的小技巧,小知识来解释的时候,请抽取成函数。比如判断一个0是正零还是负零,我们其实只要写 1/x === -Infinity
或者Object.is(-0,x)
就好,但是这需要一些额外的知识,所以可以抽取成函数const isNegativeZero = x => Object.is(x, -0)
css尽量使用css-module,防止污染模块外的组件。
另外,className 尽量只有一个字符串值,不要用classnames
库把很多的样式组合出来一个新样式。样式的组合使用 less或者sass的 mixin,extends等特性
大多数情况,你不需要继承扩展修改现有的类,也不需要大部分的Java程序员带来的面向对象的各种实践。我们需要的事情是,把各种复杂的逻辑,拆成简单清晰的小函数,或着可以复用的object就好了。