Javascript 从索引处的数组获取值,同时如果索引不存在则避免未定义?

标签 javascript arrays types error-handling undefined

来自 Python,看到这个 JavaScript 对我来说很奇怪:

a = []
b = a[0] 
b === undefined // returns true

在 Python 中,a[0] 会抛出一个索引错误,并且会阻止您继续并可能在将来遇到更多错误。 B 永远不会被设置为未定义。

在 Python 中我可以这样做:

a = [1, 2, 3]
try:
    b = a[5]
except IndexError:
    print('Index out of range')

b 永远不能设置为未定义,这样可以防止以后发生潜在的奇怪事情。在 JavaScript 中处理这个问题的最佳方法是什么?我倾向于尝试这样的事情:

a = []
b = a[0] || <something other than undefined>

如果 a 应该是一个对象列表,它可能是:

a = []
b = a[0] || {} // set b to empty object instead of undefined

我认为在 JavaScript 中处理此问题的一种常见方法是进一步处理它:

a = []
b = a[0]

if (b) {
    // do something if b is defined
}

// or 

if (!b) {
    // do something if b is undefined 
}

在 JavaScript 中,是否有避免将某些内容设置为未定义的最佳或常见做法?在这种访问数组的特定情况下,避免将某些内容设置为未定义的最佳方法是什么?

最佳答案

你可以使用 in operator运算符,检查对象/数组中是否存在属性 conditional (ternary) operator ?:对于值或一些默认值。

这种方法节省了 falsy值(value)观也是如此。

const b = 0 in aa ? a[0] : <something other than undefined>;

关于Javascript 从索引处的数组获取值,同时如果索引不存在则避免未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51318766/

相关文章:

javascript - 动画 Accordion 高度不起作用

c++ - 移植程序,好奇 int16_t & __int16 是不是 'the same'

javascript - 基于公共(public)id连接两个js对象数组的功能方式

javascript - 显示保存的输入值

javascript - 什么值会使这个函数崩溃?

java - 添加、删除和删除数组中的所有方法,而不使用任何其他数据结构或任何其他导入

c - 如何在给定的数组中按顺序插入元素?

c# - Guid 是原始类型还是复杂类型?

typescript - 如何将空检查拉入 typescript 中的功能

javascript - Chrome 扩展程序未正确更改 DOM