【问题标题】:What is this practice called? `objectName && objectName.thing`这种做法叫什么? `objectName && objectName.thing`
【发布时间】:2017-09-09 22:59:11
【问题描述】:

我正在尝试查找实践的名称(任何语言),在该实践中,人们在对其执行查找之前检查对象是否存在。通常这是通过在对象和对象查找表达式之间添加&& 来完成的,就像在 JS 中一样:

var example = objectName && objectName.thing;

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

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

【问题讨论】:

  • 通常称为空检查。
  • objectName 的简写? objectName.thing : null
  • @subash 不完全相同,因为objectName 也可以是undefined 或任何其他值。
  • 用逻辑与检查并用假值短路?
  • @Xufox undefined 也被评估为假权利

标签: javascript terminology


【解决方案1】:

这有时被称为“守卫”,因为左操作数的真实性守卫对右操作数的访问。当然,这只是逻辑与,但在这种特定上下文中使用 AND 有时被称为“守卫”。

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

&& 运算符通常称为逻辑与。也可以叫守卫

来自 Sean McArthur 的 Guard and Default Operators of JavaScript

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

【讨论】:

  • 啊!守卫。我这辈子都记不起来了。谢谢!
【解决方案2】:

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

var example = objectName ? objectName.thing : null

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

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多