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

Zac*_*lor 5 javascript arrays error-handling types undefined

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

a = []
b = a[0] 
b === undefined // returns true
Run Code Online (Sandbox Code Playgroud)

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

在Python中我可以做类似的事情:

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

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

a = []
b = a[0] || <something other than undefined>
Run Code Online (Sandbox Code Playgroud)

在a应该是对象列表的情况下,它可以是:

a = []
b = a[0] || {} // set b to empty object instead of undefined
Run Code Online (Sandbox Code Playgroud)

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

a = []
b = a[0]

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

// or 

if (!b) {
    // do something if b is undefined 
}
Run Code Online (Sandbox Code Playgroud)

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

Nin*_*olz 4

您可以使用in运算符运算符,它使用条件(三元)运算符检查对象/数组中是否存在属性?:以获取值或某些默认值。

这种方法也可以保存错误值。

const b = 0 in aa ? a[0] : <something other than undefined>;
Run Code Online (Sandbox Code Playgroud)