Javascript 什么是逗号分隔函数

Javascript 什么是逗号分隔函数,javascript,dojo,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._buildNodeL

我正在阅读一个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, ...)

它有什么作用?或者我怎样才能写清楚呢?

这是一种仅在
这一情况下执行函数的方法。_hasUI
解析为true

试试这个:

true && (console.log(1), console.log(2));
这是:

false && (console.log(1), console.log(2));
您将看到只有第一行将运行
console.log()
函数


这是因为布尔AND运算符(
&&&
)是惰性计算的。如果操作符的左侧解析为
false
,则解释器不会费心计算右侧,因为该操作永远不会导致
true
。这意味着只有当左侧是一个.

时,才会执行右侧的函数。如果是这样的话。_hasUI
比调用函数更正确。查看,这与使答案更完整相同,语法
(function1,function2)
将执行两个函数(从左到右)并且将返回
function2
返回的任何内容,而不管
function1
返回的内容。@user2070775我认为您的评论更符合我想象中OP的要求