-
尽量使用
forEach
,而不是循环[1, 2, 3].forEach((element) => console.log(element));
-
最好使用
map
来创建一个带有新值的数组,而不是用循环或forEach
来更改数组的值[1, 2, 3].map((element) => element * 2);
-
过滤一个数组来剔除一些元素时,可以使用
filter
,而不是创建一个新的数组并推入符合条件的元素[1, 2, 3, 4, 5, 6, 7].filter((element) => (element % 2 == 1))
Console:[ 1, 3, 5, 7 ]
-
将数组转化成其他类型的值(对象、数字等)时,建议使用
reduce
[1, 2, 3].reduce((element, accumulator) => element + accumulator);
Console:6
应用:返回一些累计的值,如:求和/乘积/对象/字符串/数组,要观察一下是否与你循环的数据类型不一致,那么可能就要使用
reduce
。 -
避免在条件体中重新赋值
不要这样:
let emailSubject = "Hi"; if (weKnowName) { emailSubject = emailSubject + "" + name; }; sendEmail(emailSubject, emailBody);
根本不需要赋值,可以用三元语法简化语句:
function emailSubject() { return weKnowName ? `Hi ${name}` : `Hi` }; sendEmail(emailSubject(), emailBody);
-
重视避免破坏性函数
数组函数:
splice
、fill
、push
、pop
对象:
defineProperties
、Oject.assign
(可以通过给它一个{}作为第一个参数避免改变第一个参数对象)作为变量的数字和字符串:
+
和-
,即添加和拼接数组 - 改变特定索引值的函数和语法糖:
x[0]="something"
改变或创建属性 - 点和方括号语法:
.prop =
、[prop]
不要返回
null
引用透明与避免状态
处理随机性
隔绝非纯函数
无参数编程
JavaScript 重构最佳实践
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
- 使用 composer 安装类库时,一般都是进入目录,执行 composer 命令。现在有了 -d 参数,可以优化...