在JavaScript中,有没有更简单的方法来检查属性的属性是否存在?

2024-01-06

有没有一种简单的方法可以本地确定 JavaScript 对象中是否存在深层属性?例如,我需要访问这样的属性:

var myVal = appData.foo.bar.setting;

但 foo、foo.bar 或 foo.bar.setting 可能尚未定义。在 Groovy 中,我们可以这样做:

def myVal = appData?.foo?.bar?.setting

在 JavaScript 中是否有类似的方法可以做到这一点,而无需编写自定义函数或嵌套 if 语句?我发现了这个答案 https://stackoverflow.com/questions/6571551/shorthand-function-for-checking-whether-a-property-exists有用,但希望有一种更优雅、更少定制的方式。


我觉得这很方便:

var myVal = (myVal=appData) && (myVal=myVal.foo) && (myVal=myVal.bar) && myVal.settings;

如果属性存在,则将尝试序列的下一部分。

当前面的表达式&&计算结果为 false,则不会检查表达式的下一部分。如果其中任何一个myVal.appData.foo.bar.settings没有定义,其值myVal (undefined(将评估为false.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在JavaScript中,有没有更简单的方法来检查属性的属性是否存在? 的相关文章

随机推荐

  • 如何通过ID获取json数组中的数据

    我有一个问题 你可以帮助我吗 我有一个 json 数组 category id 1 product id product 1 type ball id 2 product id product 2 type pen 我的问题是 如果我有一个
  • 事件驱动的 CMS - 优点和缺点

    我正在尝试确定事件驱动的 CMS 的一些优点和缺点 事件驱动并不罕见 您可以在许多涉及客户端的脚本语言中看到它 例如 Actionscript javascript jquery 在事件及其响应发生在服务器上的 CMS 中怎么样 这种方法有
  • Visual Studio 使用什么来确定构建是否是最新的?

    我编写了一个 VS 插件 它拦截 Visual Studio 的构建命令并使用另一个构建系统来进行构建 我的构建以正确的格式显示错误 以便您可以在 VS 中单击它们 但要实现完全无缝集成 剩下的一步是防止 VS 的 运行 或 调试 命令抱怨
  • 如何绘制 lmer 模型结果的预测值和标准误差?

    我对四个位置和四个基质 取自每个位置 进行了移植实验 我已经确定了每个种群在每个位置和基质组合中的存活率 该实验重复三次 我创建了一个lmm 如下所示 Survival model lt lmer Survival Location Sub
  • “new Image()”和“new Option()”等构造函数的记录在哪里?

    不是在 Mozilla 而是 for image 谢谢Rickard https stackoverflow com users 600633 rickard用于识别 http www w3 org html wg drafts html
  • iOS 8 iPhone 模拟器应用程序大小不正确

    我决定从头开始重写我的一个应用程序以清理代码并可能针对 iOS 8 进行优化 但是当我在 iPhone 模拟器中运行新版本时 分辨率似乎不正确 应用程序的顶部和底部边缘周围有信箱 但旧版本即使在同一个 Xcode 6 模拟器上运行也没有 即
  • 如何更改 android 小部件选择对话框中显示的图像?

    如何更改渲染 Specify the android previewImage属性 http developer android com guide topics appwidgets index html preview在您的应用程序小部
  • pair 对作为 unordered_map 问题的键

    My code typedef pair
  • 如何在iOS中计算地理边界框?

    我想在 iOS 中进行地理边界框计算 它可以是大约 输入参数 当前位置 示例 41 145495 73 994901 半径 米 示例 2000 所需输出 敏龙 示例 41 9995495 最小纬度 示例 74 004901 MaxLong
  • 文档与多个关键字的相关性

    Suppose D是一个文本文档 并且 K lt k1 kN gt 表示文档中包含的一组术语 例如 D What a wonderful day isn t it K lt wonderful day gt 我的目标是看看文件是否D谈论中的
  • 如何在 JavaScript 中过滤 JSON 对象?

    我有以下 JSON 字符串 Alarm Hello 48 World 3 Orange 1 Rapid Total 746084 Fake 20970 Cancel 9985 Word 2343 Flow Support 746084 Ab
  • Zend_Db 子查询

    我一直在尝试使用 ZendFW 构建一个 sql 查询 但我似乎无法让它像我想要的那样运行 或根本无法运行 这是我尝试使用 zend db select 构建的有效查询 SELECT tc trip title td ID td trip
  • 使用 /etc/fstab 自动挂载多个 s3fs 存储桶

    在 s3fs 指令 wiki 中 我们被告知可以通过输入以下行来自动挂载 s3fs 存储桶 etc fstab s3fs mybucket mnt mybucket fuse allow other use cache tmp url ht
  • 选中/取消选中 - ifChecked 不起作用

    更新 我正在使用以下内容plugin https github com fronteed icheck 我试图检查当用户刷新页面或重新加载页面时是否选中了该复选框 这是我使用过的 但我已经完成了调试 但它从未执行second IF状况 in
  • UIImageView 内存泄漏?

    我执行了以下步骤 在 Xcode 中创建基于视图的 iPad 应用程序 打开 xib文件 添加一个UIImageView 为其设置一个图像 200x100图像 通过 运行 gt 使用性能工具运行 gt 泄漏 来启动程序 据报道有两处泄漏 L
  • 有什么方法可以在启动 Firefox/Chrome 后自动启动 Firebug/Inspector 吗?

    有什么办法可以让 Chrome 启动后自动启动 Inspector 吗 有什么办法可以让Firefox启动后自动启动Firebug吗 Regards Javi 在 Firefox 中 您可以通过打开将 Firebug 设置为始终打开关于 配
  • Anaconda 从另一个环境导入包

    我从另一台机器导入了 anaconda 环境 我想将导入环境中的软件包安装到根目录中或将导入环境设置为默认环境 有什么办法吗 1 将所有包从一个环境导入到另一个环境 或者 2 使用非root环境作为默认环境 注意 这两个环境均适用于 pyt
  • 防止 C# 应用程序终止进程

    如何保护我的 C 应用程序不被其他人通过任务管理器或以编程方式杀死其进程 这是我的场景 应用程序A是另一个团队开发的MFC应用程序 它有一个未发布的基于文本的远程界面 可通过后门启用 我正在开发应用程序 B 这是一个与 A 交互的 C Wi
  • ZEND 货币符号显示 1

    我正在使用 zendcurrency 根据区域设置显示货币 当我使用以下代码时 符号会被 1 替换 而不是简单地被删除 currency new Zend Currency locale currency gt setFormat arra
  • 在JavaScript中,有没有更简单的方法来检查属性的属性是否存在?

    有没有一种简单的方法可以本地确定 JavaScript 对象中是否存在深层属性 例如 我需要访问这样的属性 var myVal appData foo bar setting 但 foo foo bar 或 foo bar setting