gpt4 book ai didi

undefined object 子属性的 Javascript typeof

转载 作者:行者123 更新时间:2023-11-30 07:59:05 25 4
gpt4 key购买 nike

假设我想检查对象 Foo 的属性是否已定义,我将在这种情况下使用:

typeof Foo.property != 'undefined'

但如果不仅属性不存在,而且对象未定义,则会导致错误。

是否有任何单行方法来检查是否定义了对象属性,并在以下情况下返回 false:

  • 如果 undefined object 属性
  • 如果对象未定义

为什么我想要这个:我正在用 NodeJS 编写一个脚本,它使用一个类,它也将在前端使用,而不是维护两个不同的文件,这最终会除了两个环境的微小变化外,它们基本相同,我想用一些基本的 IF 逻辑来区分环境。

其他可能的用例:假设我们有以下对象:

function Foo() {
this.case1={
info1: 'something',
info2: 'something',
.....
info1000: 'something'
}

this.case2={
info1: 'something',
info2: 'something',
......
info1000: 'something'
}
}

如果我想决定哪种情况适用于我,并且决定取决于其中一个内部信息,我首先必须检查相应的情况是否存在,然后检查相应的信息是否存在(2 个条件):

  if (typeof Foo.case1 != 'undefined') && (typeof Foo.case1.info1 != 'undefined')

如果这是一个更深的嵌套对象,将会进行大量的条件检查和输入,以获取一些基本信息:如果 case1 根本不存在,那么我将使用 case2。

最佳答案

您可以使用 and (&&) 子句。

typeof Foo !== 'undefined' && typeof Foo.property !== 'undefined'

或者更简单地说:

Foo !== undefined && Foo.property !== undefined

编辑:作为David Titarenco指出,这是由于所谓的短路评估而起作用的。这基本上意味着如果第一部分的计算结果为 false (Foo !== undefined),则永远不会计算第二部分。

关于 undefined object 子属性的 Javascript typeof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32768783/

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