我正在查看一些已编译的咖啡脚本代码,我注意到以下内容,我认为这很奇怪:
var current, x = 8;
current = this._head || (this._head = x);
运行之后,当前值为8.通过||的方式判断逻辑运算符工作,我希望它首先评估左侧。在左侧获得“未定义”之后,它移动到右侧,在此处将this._head指定为8.之后它返回true,但这部分不重要吗?我不知道它怎么会回来并影响“当前”变量?任何帮助将不胜感激,谢谢!
答案 0 :(得分:1)
||
运算符返回值,而不是true
。
current = this._head || (this._head = x)
也可以写成
current = this._head ? this._head : (this._head = x);
或
current = this._head;
if(!current)
current = this._head = x;
答案 1 :(得分:1)
||
运算符返回左侧,如果它是“truthy”,否则,右侧 - 无论其真实性如何。它没有将表达式转换为布尔值true / false!
undefined || (this._head = x)
返回右侧this._head = x
在上例current
答案 2 :(得分:0)
您可以使用表达式
var current=this._head ? this._head : (this._head = x);