【问题标题】:javascript, test if nested attribute exists [duplicate]javascript,测试嵌套属性是否存在[重复]
【发布时间】:2016-10-14 17:19:59
【问题描述】:
var foo = a.foo or {}
var bar = foo.bar or {}

对每一层嵌套都执行此操作很乏味。

我可以用某种方式代替吗?

var bar = a.foo.bar or {}

【问题讨论】:

  • 不,不是真的,否则你会得到属性栏不存在于未定义,但是你可以创建一个检查这个的函数
  • 你也可以用一个小的实用函数来完成它(虽然我也相信 Nina 的代码是最简单的),比如:jsfiddle.net/Icepickle/85cbq9h1

标签: javascript


【解决方案1】:

你需要一个嵌套的方法,你可以看看logical operatorsobjects

var bar = a && a.foo && a.foo.bar || {};

【讨论】:

  • 如果 aa.foo 未定义,这不会返回 false。
  • 哦,javascript && 运算符确实返回完整对象,而不是真值。谢谢。
【解决方案2】:

在javascript中你需要使用||来表示or

var bar = a.foo.bar || {}; // However, a, a.foo may also be undefined

因此,您需要使用&& 运算符检查它们以了解它们是否都已定义:

var bar = a && a.foo && a.foo.bar || {};

【讨论】:

    猜你喜欢
    • 2014-06-22
    • 2011-02-07
    相关资源
    最近更新 更多