我正在阅读一个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))
Run Code Online (Sandbox Code Playgroud)
这个函数写在一行上.它包含用逗号分隔的函数.所以我看不懂.
我不问上面的功能是做什么的.
这是什么意思?:
this._hasUI && (firstFunction, secondFunction, ...)
Run Code Online (Sandbox Code Playgroud)
它有什么作用?或者我怎么写清楚?
这是一种只有在this._hasUI解析为true 时才执行函数的方法.
试试这个:
true && (console.log(1), console.log(2));
Run Code Online (Sandbox Code Playgroud)
还有这个:
false && (console.log(1), console.log(2));
Run Code Online (Sandbox Code Playgroud)
你会看到只有第一行才能运行这些console.log()功能.
这是因为布尔AND运算符(&&)被懒惰地计算.如果操作符的左侧解析为false,则解释器将不会打扰评估右侧,因为操作永远不会导致操作true.这意味着只有当左侧是真值时,才会执行右侧的功能.
| 归档时间: |
|
| 查看次数: |
2403 次 |
| 最近记录: |