这种做法叫做什么? `objectName&& objectName.thing`

时间:2017-04-13 17:51:49

标签: javascript terminology

我试图找到练习的名称(在任何语言中),在对其执行查找之前检查对象是否存在。通常这是通过在对象和对象查找表达式之间引入&&来完成的,就像在JS中一样:

var example = objectName && objectName.thing;

使得example被评估为undefinedobjectName.thing,并避免运行时错误。

我可以发誓我之前听过这个,但我已经完全忘记了。这种做法叫做什么?

2 个答案:

答案 0 :(得分:1)

这有时被称为"警卫,"因为左操作数 guards 的真实性访问了右操作数。当然,它只是一个逻辑AND,但在这个特定的上下文中使用AND有时被称为" guard"。

来自Douglas Crockford的A Survey of the JavaScript Programming Language

  

&&运算符通常称为 logical和。它也可以被称为 guard

来自Sean McArthur的Guard and Default Operators of JavaScript

  

在Javascript中,语言确定逻辑操作的方式以及Javascript视为真或假的值导致人们使用AND和OR运算符来 guard 默认情境

答案 1 :(得分:0)

这种做法有时称为验证或评估。您可以使用三元运算符来执行此操作。

var example = objectName ? objectName.thing : null

这会将objectName.thingnull分配给example,具体取决于 objectExample