我正在尝试理解Javascript中的单行代码,但这不是很明显。
有效的路线:
this._iconNeedsUpdate = !0,this._expandBounds(t), t instanceof L.MarkerCluster ? (e || (this._childClusters.push(t), t.__parent = this), this._childCount += t._childCount) : (e || this._markers.push(t), this._childCount++), this.__parent && this.__parent._addChild(t, !0)
我尝试使用下面的代码转换,但它不起作用:
this._iconNeedsUpdate = !0;
this._expandBounds(t);
if (t instanceof L.MarkerCluster) {
if (!e) {
this._childClusters.push(t);
t.__parent = this;
} else {
this._childCount += t._childCount;
}
} else {
if (!e) {
this._markers.push(t);
this._childCount++;
}
}
if (this.__parent) {
this.__parent._addChild(t, !0);
}
有什么想法吗?
谢谢!
在你的帮助之后,好的代码是:
this._iconNeedsUpdate = true;
this._expandBounds(t);
if (t instanceof L.MarkerCluster) {
if (!e) {
this._childClusters.push(t);
t.__parent = this;
}
this._childCount += t._childCount
} else {
if (!e) {
this._markers.push(t);
}
this._childCount++;
}
if (this.__parent) {
this.__parent._addChild(t, true);
}
谢谢!
答案 0 :(得分:0)
三元条件运算符的优先级最低。
此外,(A || B), C
只有当A是假的时候才会评估B,但是C总是会被评估。
所以等效的代码是:
this._iconNeedsUpdate = true;
this._expandBounds(t);
if (t instanceof L.MarkerCluster) {
if (!e) {
this._childClusters.push(t);
t.__parent = this;
}
this._childCount += t._childCount
} else {
if (!e) {
this._markers.push(t);
}
this._childCount++;
}
if (this.__parent) {
this.__parent._addChild(t, true);
}