JavaScript评估如何返回对象?

时间:2011-11-05 21:54:16

标签: javascript syntax

我不希望您通过这段代码了解的含义

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

return columnOverrides.formatter;

但从语法上讲,如何评估逻辑表达式返回一个对象?

3 个答案:

答案 0 :(得分:8)

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

  • a || b大致相当于a ? a : b
  • a && b大致相当于a ? b : a

可在此处找到更多信息:

答案 1 :(得分:4)

在JavaScript中,a && b首先评估a。如果afalsy值,则返回a,否则返回ba || b的作用相同;如果a真实,请返回a,否则返回b

这可以导致一些非常简洁明了的代码(一旦你理解它),比如“获取第一个非空值”:

var a = null;
var b = null;
var c = 5;
var d = "Hello";

alert(a && b && c && d); // 5

或简单的跨浏览器事件:

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

答案 2 :(得分:2)

当问题得到解答时 - 我认为在此代码中有一个但是rowMetadatanullundefined或者它会破坏,如果您正在使用{ {1}}这是一种可能性。只是一个抬头。

最后一行也应该是:

&&