我正在阅读一个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))
这个函数写在一行上。2它包含了用逗号分隔的函数。3所以我看不懂它。
我不问上面的函数是做什么的。
这是什么意思?:
this._hasUI && (firstFunction, secondFunction, ...)
它是做什么的?或者我怎么写清楚?
2条答案
按热度按时间tct7dpnv1#
这是一种仅在
this._hasUI
解析为true时才执行函数的方法。试试这个:
还有这个
您将看到只有第一行将运行
console.log()
函数。这是因为布尔AND运算符(
&&
)的计算是惰性的,如果运算符的左边解析为false
,解释器就不会计算右边的运算符,因为运算永远不会产生true
,这意味着右边的函数只有在左边是truthy value时才会执行。nxagd54h2#
让我们把它放在一个对象中,为了可读性,我用括号把函数括起来:
基本上,这意味着如果._hasUI为真继续执行您找到的内容。在这种情况下,执行/评估第一个函数,然后是第二个函数..直到最后一个函数,它将只返回最后一个函数的结果。您可以找到其他内容,而不仅仅是函数,您可以找到比较变量,任何表达式...
看看同样的整数代码:
希望你能理解