当前位置: 首页 > 知识库问答 >
问题:

如何在不测试其父母是否存在的情况下检查“休假”成员是否存在[重复]

梁丘波鸿
2023-03-14

想象一下这个代码:

var obj = {};
obj.x = {};
obj.x.y = {};

if (obj.x.y.z) {
  //the test work, I know obj.x.z.z do not exist
}

if (obj.a.b) {
  //fail because "cannot read property 'b' of undefined
}

问题是:我怎样才能检查“休假”(如果“b”存在,它必须在“a”内)的存在,而不必事先对每个人的父母进行测试?

共有3个答案

上官修文
2023-03-14

有一个关于操作员的建议,看起来像 调用可选链接

然后,您将在示例中使用它,如

obj.a?.b

不过现在,您必须编写更多内容来安全访问嵌套属性

var obj = {};
obj.x = {};
obj.x.y = {};

if (obj.x.y.z) {
  //the test work, I know obj.x.z.z do not exist
}

if (obj && obj.a && obj.a.b) {
  // will not throw
} else {
  console.log('didn\'t throw!')
}

戴鸿羲
2023-03-14

您可以使用elvis运算符。

if (obj.a?.b) { // no error thrown
  console.log('error'); // 'error' isn't be logged
}
郑俊材
2023-03-14

用于检查密钥是否存在。

var obj = {};
obj.x = {};
obj.x.y = {};

if (obj.x.y.z) {
  //the test work, I know obj.x.z.z do not exist
}

function isExist(arg){
   try{
      return arg();
   }catch(e){
      return false;
   }
}

console.log(isExist(()=>obj.x.y))
console.log(isExist(()=>obj.x.y.z))
console.log(isExist(()=>obj.a.b))
 类似资料:
  • 问题内容: 我正在尝试编写一个脚本,该脚本需要根据CSS选择器找到的特定浏览器对象是否存在来适应其工作流程行为。 我不想使用document.getElementByID方法,因为从技术上讲,这不是CSS选择器,并且我们整个企业都在CSS选择器上进行了标准化,因此在DOM以外的其他任何选择都不会使CSS选择器超出我们的代码审查过程无论如何。 ThingSelector在哪里: OpenThing在

  • 问题内容: 我经常要检查一个对象是否有成员。一个示例是在函数中创建单例。为此,可以这样使用: 但您也可以这样做: 一种方法比另一种更好吗? 编辑: 添加了…但是,请注意,问题 不 在于如何制作单例,而在于如何检查对象中成员的存在。 编辑: 对于该示例,一种典型用法是: 然后是类型相同的对象,每次相同。并且,通常,该方法被调用多次。 问题答案: 这是两种不同的方法:№1是LBYL(飞跃前先看一下),

  • 我遇到了这个PHP代码使用SMTP检查电子邮件地址而不发送电子邮件。 有没有人尝试过类似的方法,或者对你有用吗?你能判断客户/用户输入的电子邮件是否正确和是否存在吗?

  • 问题内容: 我有一个嵌入了数据库的桌面应用程序。当我执行程序时,我需要检查特定的表是否存在,如果不存在则创建它。 给我的数据库一个名为conn的Connection对象,我该如何检查呢? 问题答案: 您可以使用可用的元数据: 有关更多详细信息,请参见此处。还要注意JavaDoc中的注意事项。

  • 问题内容: 我正在尝试检查$ _POST是否存在,如果存在,则在另一个字符串中打印它,如果不存在,则根本不打印。 像这样的东西: 任何帮助将是巨大的! 问题答案:

  • 是否可以编写一个模板,根据是否在类上定义了某个成员函数来改变行为? 下面是我想写的一个简单的例子: 因此,如果定义了,那么它将使用它;否则就不会。我不知道怎么做的神奇部分是“function_exists”部分。