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

问题描述:

我试图找到在执行查找之前检查存在的对象的练习的名称(以任何语言)。通常,这是通过在JS在一个&&投掷物体与对象查找表达式之间,像这样完成:这种做法叫做什么? `objectName && objectName.thing`

var example = objectName && objectName.thing; 

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

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

+3

它通常被称为空校验分配objectName.thingnullexample。 ** objectName的简写形式? – RJM

+0

objectName.thing:null ** – subash

+1

@subash不完全相同,因为'objectName'也可以是'undefined'或任何其他值。 – Xufox

由于左操作数的真实性看门狗有权访问右操作数,因此有时称之为“警卫”。当然,这只是一个合乎逻辑的AND,但在这个特定的环境中使用AND有时被称为“警卫”。

从道格拉斯Crockford的A Survey of the JavaScript Programming Language

&&操作通常被称为逻辑和。它也可以叫做后卫

Guard and Default Operators of JavaScript由肖恩·麦克阿瑟:

在JavaScript中,这样的语言决定了逻辑运算和如JavaScript对待使用AND和OR运算符true或false导致人们对后卫值和默认情况

+0

啊!守卫。无法记住它为我的生活。谢谢! –

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

var example = objectName ? objectName.thing : null

这将取决于objectExample