Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript计算如何返回对象?_Javascript_Syntax - Fatal编程技术网

JavaScript计算如何返回对象?

JavaScript计算如何返回对象?,javascript,syntax,Javascript,Syntax,我不希望您理解这段代码的含义: var columnOverrides = rowMetadata && rowMetadata.columns && (rowMetadata.columns[column.id] || rowMetadata.columns[getColumnIndex(column.id)]); return columnOverrides.formatter; 但是在语法上,逻辑表达式的求值如何返回一个对象呢?在Java

我不希望您理解这段代码的含义:

var columnOverrides = rowMetadata &&
    rowMetadata.columns &&
    (rowMetadata.columns[column.id] || rowMetadata.columns[getColumnIndex(column.id)]);

return columnOverrides.formatter;

但是在语法上,逻辑表达式的求值如何返回一个对象呢?

在JavaScript中
&&
|
不一定返回true或false。他们返回他们的一个论点

  • a | | b
    大致相当于
    a?a:b
  • a&&b
    大致相当于
    a?b:a
更多信息可在此处找到:


    • 在JavaScript
      &&
      |
      中不一定返回true或false。他们返回他们的一个论点

      • a | | b
        大致相当于
        a?a:b
      • a&&b
        大致相当于
        a?b:a
      更多信息可在此处找到:


      在JavaScript中,
      a和&b
      首先计算
      a
      。如果
      a
      是一个值,则返回
      a
      ,否则返回
      b
      <代码>a | | b的工作原理相同;如果
      a
      为真,则返回
      a
      ,否则返回
      b

      这会产生一些非常好、简洁但清晰的代码(一旦您理解它),如“获取第一个非空值”:

      或轻松的跨浏览器事件:

      var f = window.addEventListener || window.attachEvent || (function() {});
      f.call(window, 'load', function() {
           alert('Loaded!');
      }, false);
      

      在JavaScript中,
      a&&b
      首先计算
      a
      。如果
      a
      是一个值,则返回
      a
      ,否则返回
      b
      <代码>a | | b的工作原理相同;如果
      a
      为真,则返回
      a
      ,否则返回
      b

      这会产生一些非常好、简洁但清晰的代码(一旦您理解它),如“获取第一个非空值”:

      或轻松的跨浏览器事件:

      var f = window.addEventListener || window.attachEvent || (function() {});
      f.call(window, 'load', function() {
           alert('Loaded!');
      }, false);
      

      正如问题的答案一样-我认为在这段代码中有一个but-如果
      rowmata
      null
      未定义的
      或诸如此类,它将中断,并且如果您使用
      和&
      这是一种可能性。只是一个提醒

      最后一行也应该是:

      return columnOverrides && columnOverrides.formatter;
      

      正如问题的答案一样-我认为在这段代码中有一个but-如果
      rowmata
      null
      未定义的
      或诸如此类,它将中断,并且如果您使用
      和&
      这是一种可能性。只是一个提醒

      最后一行也应该是:

      return columnOverrides && columnOverrides.formatter;
      

      |
      在这种情况下通常指的是“默认”运算符。
      |
      在这种情况下通常指的是“默认”运算符。非常好的示例,尤其是第二个示例-让我大吃一惊。非常好的示例,尤其是第二个示例-让我大吃一惊。天哪,你有一些很好的技巧!事实上,原来的
      return
      要复杂得多-我把它删掉是为了让我的问题更清楚-事实上它用了短路的方式。天哪,你真有本事!事实上,原来的
      return
      相当复杂——为了让我的问题更清楚,我把它删掉了——事实上,它采用了短路的方式。