javascript - 当我尝试访问不存在的属性时,为什么 javascript 没有抛出类型错误?

标签 javascript

<分区>

当我尝试访问不存在的属性时,为什么 javascript 没有抛出类型错误?

我的代码如下

var array = [];
var someBoolean1 = array[0] && array[0].hey;

someBoolean 的值原来是'undefinded';我预计 javaScript 会抛出类型错误;

当我做的时候

var array = [];
var someBoolean2 = array[0].hey;

按预期抛出类型错误。

但是我不明白为什么第一段代码没有类型错误。 有什么想法吗?

最佳答案

因为你明确地防止了类型错误...

array[0] && array[0].hey

array[0]是未定义的,所以:

undefined && array[0].hey

undefinedfalsey,所以右边不计算,所以这个表达式的结果是左边的值 undefined , 分配给 someBoolean1 .


Tangentially... 为了减少这种表达的重复性,通常使用这个成语:

var someBoolean1 = (array[0] || {}).hey;

如果array[0]undefined , {}将被使用,然后是属性 .hey该对象的将被访问。如果array[0]是具有属性 .hey 的对象,你会得到它的值(value),否则你会安全得到undefined在整个表达式中。

关于javascript - 当我尝试访问不存在的属性时,为什么 javascript 没有抛出类型错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040259/

相关文章:

javascript - 如何在核心 PHP 上显示显示来自第三方站点的 RSS 提要的要求?

javascript - ng-if 语句内的动态属性

javascript - 带有显示和隐藏功能的纯 JavaScript sibling ,现在是 jQuery

javascript - POST 请求时出现错误 422 Angular 2 Drupal 8

javascript - 无法在普通 JS 中导出类

javascript - 如何删除事件监听器,以便在卸载组件时它不会尝试更新状态?

javascript - 如何使用 JavaScript 从父级元素的 ID 获取元素的属性?

javascript - JS中的函数调用事件?

javascript - 使用 luxon 检测时区缩写

javascript - 灯箱、CSS 和 JavaScript