You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// bad
function createFile(name, temp) {
if (temp) {
fs.create(`./temp/${name}`);
} else {
fs.create(name);
}
}
// good
function createFile(name) {
fs.create(name);
}
function createTempFile(name) {
createFile(`./temp/${name}`);
}
// bad
class Dog {
constructor(options) {
this.options = options;
}
run() {
this.options.run(); // 必须传入 run 方法,不然报错
}
}
const dog = new Dog({}); // Uncaught TypeError: this.options.run is not a function
dog.run()
// good
class Dog {
constructor(options) {
this.options = options;
}
run() {
if (this.options.run) {
this.options.run();
return;
}
console.log('跑步');
}
}
一些原则
避免副作用: 集中副作用:遇到不可避免的副作用时候,比如读写文件、上报日志,那就在一个地方集中处理副作用,不要在多个函数和类处理副作用。
其它注意的地方:
1.处理if语句中对单个变量值的多次逻辑运算
2. 用return提前返回,减少if嵌套
3. 使用HOC, 为一个函数增加额外的功能 curry
4.使用every/some处理全部/部分满足条件
5.删除冗余的if...else if...if语句
6. 替换数组中的特定值
可以使用.splice(start、value to remove、valueToAdd),这些参数指定希望从哪里开始修改、修改多少个值和替换新值。
7. Array.from 达到 .map 的效果
7. 将数组转换为对象
8. 分组groupBy
9. 策略模式
维基百科上说:策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法
👍better
当需要增加角色,或者修改角色数字的时候,只需要修改 ROLES 里对应的字段,以及 ROLE_METHODS 里的方法即可,这样就可以将可能很冗长的 if...else 代码给抽离出来,颗粒度更细,更好维护。
10. 函数参数解构
11. 短路求值
12. 解构组合新对象
这个 pick 方法是一个柯里化的函数,在向其中传入所需字段后,返回的函数可以将入参对象的对应字段提取到新的对象中,并过滤由于入参对象未定义 key 产生的 undefined 值。
调用方法如下:
13. 判断一个空对象
14. js 快速生成数组序列
15. 通用验证函数
15. 👍 map
16. 如何平滑滚动到页面顶部
17. 功能性集合
几个优雅的运算符使用技巧
??与||的功能是相似的,区别在于 ??在左侧表达式结果为 null 或者 undefined 时,才会返回右侧表达式
数据类型检测
数据特殊操作
数字金额千分位格式化
设计模式
随机生成字母和数组的组合
在方法中有多条件判断时候,为了提高函数的可扩展性,考虑下是不是可以使用能否使用多态性来解决。
对象
多使用getter和setter(getXXX和setXXX)。好处:
类
solid
持续更新中......
The text was updated successfully, but these errors were encountered: