【问题标题】:In JS what does processMethod = processMethod || function(){}; do? [duplicate]在 JS 中 processMethod = processMethod || 是什么功能(){};做? [复制]
【发布时间】:2014-02-23 17:01:02
【问题描述】:

我正在阅读一些 javascript 代码,并且我看到了很多看起来像这样的代码:

processMethod = processMethod || function(){};

它通常在函数中找到。我相信这是一个速记代码,但我不确定它的作用。

它是否检查 processMethod 是否有值,是否没有将其声明为可以稍后定义的函数?

【问题讨论】:

  • 表示如果processMethod不存在,只需创建一个空函数来防止processMethod -- undefined error.
  • 对不起#Raymond Chen。我不知道如何提出这个问题,甚至不知道在发布之前要搜索什么字词。
  • 是的,重要的部分是标点符号,所以不知道如何搜索。
  • @RaymondChen, @gdaniel: [javascript] what does "||" do

标签: javascript shorthand


【解决方案1】:

一句话:

if there is no processMethod, create it empty.

|| 与布尔值一起使用,因此它检查第一个操作数 processMethod 是否具有布尔等效项。如果 processMethod 已定义且不为 null,则布尔等效值为 true。如果 processMethod 未定义或为 null,则布尔等效值为 false。在错误情况下,|| 查找第二个操作数的布尔等效项,它不为空,因此其布尔等效项为 true

false || true 解析为 true,因此 processMethod 变为 function(){}

顺便说一句 function(){} 是一个空函数,过去不会在processMethod() 上抛出错误

【讨论】:

  • 谢谢,这是有道理的。还在学习速记代码。
【解决方案2】:

它本质上检查它是否存在。如果不存在,请分配它。

function doSomething(o) {
    o = o || {};
}

在上述情况下,它检查是否传递了o 的值。如果不是,它会为其分配一个空对象。

【讨论】:

  • 在这种情况下,doSomething(0) 可能不幸地更改为{}
  • 从技术上讲,但如果您期望一个对象,您可能不会通过 0。
  • 正确,它也符合 OP 的具体问题。
猜你喜欢
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 2020-01-29
  • 1970-01-01
  • 2013-02-17
  • 2021-11-03
相关资源
最近更新 更多