给你老弟讲讲:为什么可选链 `?.` 好用又惹争议?
我差不多有二十年一直在写 JavaScript 了,但我还是不明白为什么 ?.
不会被认为是一种反模式,特别是在方法调用时。
我看到了那条帖子
## 20 个每个开发者都应该知道的 JavaScript 小技巧 🚀 Jagroop Singh ・ 10月28日 #webdev #javascript #discuss #beginners
其中有一项引起了我的注意,即编号2 “包含函数调用的可选链”
const user = {
getName: () => 'Alice',
};
console.log(user.getName?.()); // 输出 Alice
console.log(user.getAge?.()); // 输出 undefined
点击全屏模式 点击退出全屏
这句在喊“我不知道我对象的接口,也不管”。
你应该绝对关心对象的接口。
我几乎能理解在库API改变时对健壮性的需求,但不是这样,如果你在使用一个库,你应该熟悉对象的接口,调整你的代码。
这看起来就像一个巨大的虫子陷阱。
你绝不会希望某件事处于 未定义
状态。或者我是不是哪里没跟上?
特别是对于方法来说更是如此。如果两个对象的行为不一样,应该把它们当成不同的类型来处理,不能只是说“没关系”。
现在检查 null
是否非法?我知道 null
被戏称为十亿美元的错误,但这可以通过使用如 Haskell 中的 Maybe
这样的可选类型来解决,而不是看起来的反面。
一种可选类型表明这可能是空的,因此在处理时要小心。它不会像 ?.
一样隐藏事实。
说了这么多,我很高兴能纠正这种想法,即?.
不仅仅是拖延问题,处理null
时;处理undefined
时也不仅仅是因为设计不当。
使用 ?.
可以减少 bug 的好模式是什么?
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦