什么是Javascript逗号分隔函数

时间:2014-02-04 08:08:57

标签: javascript dojo

我正在阅读一个javscript dojo库,我看到许多复杂的函数,我无法理解。例如:

_refreshUI: function () {
    this._hasUI && (g.empty(this.flowContainer), f.forEach(this.basemaps, function (a, b) { a.id || (a.id = "basemap_" + b); this.flowContainer.appendChild(this._buildNodeLayout(a))
}, this), g.create("br", { style: { clear: "both" } }, this.flowContainer), this._markSelected(this._selectedBasemap))

此功能写在一行上。它包含用逗号分隔的函数。所以我看不懂。

我不问上述功能是做什么的。

这是什么意思?:

this._hasUI && (firstFunction, secondFunction, ...)

它做什么?或者我怎么写清楚?

1 个答案:

答案 0 :(得分:7)

这是仅在this._hasUI解析为true时执行函数的方法。

试试这个:

true && (console.log(1), console.log(2));

而且:

false && (console.log(1), console.log(2));

您会看到只有第一行会运行console.log()个功能。

这是因为布尔AND运算符(&&)被懒惰地评估。如果运算符的左侧解析为false,则解释器将不会打扰评估右侧,因为该操作永远不会导致true。这意味着只有当左侧是truthy value时才会执行右侧的功能。