javascript - 类型错误和短路评估?

标签 javascript typescript

TS代码

image = this.selectedItem.image.url || null;

错误

TypeError: Cannot read property 'url' of null

我的问题是,为什么不是 || null 启动而不是抛出类型错误?

最佳答案

您拥有的最短选项是:

image = this.selectedItem && this.selectedItem.image && this.selectedItem.image.url || null;

如果任何一个&&失败,您将得到null,但您必须检查您尝试访问的对象的每个“级别”。

这是有效的,因为 && 的操作顺序优先于 ||。上面的语句类似于:

x = (((a.b) && (a.b.c)) && (a.b.c.url)) || null;

另一方面,您所拥有的类似于:

x = (a.b.c.url) || null;

如果a.b没有属性c,则无法获取url。这就是错误被抛出的原因,而这不是最后的“或”可以捕捉到的。

关于javascript - 类型错误和短路评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46812592/

相关文章:

javascript - Sinon:如何创建解析多个调用的 stub

node.js - 如何在require语句中初始化类? ( typescript )

typescript - 接口(interface) typescript 的实现

types - typescript 中html元素的数组类型是什么?

javascript - 单击按钮时将表达式插入和删除到 div 中

javascript - 如何将一个字符串拆分为多个 html 文本字段

javascript - Jquery Accordion 在页面加载时崩溃

javascript - 将数组键推送到自己的数组

javascript - 当我隐藏输入时,如何防止焦点集中在输入上(jQuery)?

javascript - Angular 中的重复功能失败