gpt4 book ai didi

javascript - 为什么 b ['x' ] || 0 当 x || 时求值0 没有...并且两者都是未定义的?

转载 作者:太空宇宙 更新时间:2023-11-04 03:10:29 25 4
gpt4 key购买 nike

: a = {a: 1, b: 2}
Object {a: 1, b: 2}

: b = {a: 0, b: a['c'] || 0}
Object {a: 0, b: 0}

: c = {a: 0, b: d || 0}
ReferenceError: d is not defined

: a['c']
undefined

我想我是在问未定义未定义之间有什么区别?

这是处理这种情况的正确方法吗?

return {
resLength : retRes.length,
id : (typeof browser.id === 'undefined') ? 0 : browser.id,
}

最佳答案

这只是语言语义的问题。访问不存在的对象属性的计算结果为未定义。访问不存在的变量会引发ReferenceError

该语言可以设计为访问不存在的变量,其计算结果为未定义,但谢天谢地,事实并非如此。

它也可以被设计为访问不存在的对象属性会引发 PropertyReferenceError 或其他错误,但事实并非如此。

<小时/>

顺便说一句,要检查变量是否已定义,可以检查是否typeof varname === 'undefined'。这是另一个约定 - 您可以将不存在的变量粘贴在 typeof 中,并且 typeof 将计算为 'undefined' 而不是抛出 ReferenceError

如果您位于全局范围内,您还可以检查是否 this.varname === undefined,因为此时属性访问规则适用。

关于javascript - 为什么 b ['x' ] || 0 当 x || 时求值0 没有...并且两者都是未定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22076575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com