像someItem?.someField == somevalue这样的条件是如何以角度来评估的?

时间:2018-01-05 20:42:42

标签: angular

所以让我们在标记中有简单的条件:

someItem?.someField==somevalue

这里发生了什么?是同等的

someItem!=null && someItem!=nudefined && someItem==somevalue

如果false未定义,基本上整个条件短路到someItem?是特定于角度的语法还是javascript功能?

1 个答案:

答案 0 :(得分:0)

安全导航操作符?.(也称为Elvis Operator)是一个角度2模板表达式操作符。

安全导航运算符可以避免属性路径中的空值和未定义值的异常。

从object访问属性时,如果object为null或未定义,它可能会抛出异常。

为了更安全,我们可以使用安全导航操作符从对象访问属性,因此它不会为对象为null或未定义的场景抛出异常。

它也可用于复杂物体 - 例如{{foo?.bar?.bas}}

但是,对于数组,应使用正常的空检查策略,例如{{records && records[0]}}

JavaScript代码无法读取此运算符



let x = {
  y: 12
};

try {
  if (x ? .y > 10) {
    console.log('it works!');
  }
} catch (ex) {
  console.log('exception');
}




参考文献 -

  1. concretepage.com
  2. c-sharpcorner.com