Javascript或赋值运算符

时间:2012-03-05 08:32:54

标签: javascript operators

我正在查看一些已编译的咖啡脚本代码,我注意到以下内容,我认为这很奇怪:

var current, x = 8;
current = this._head || (this._head = x);

运行之后,当前值为8.通过||的方式判断逻辑运算符工作,我希望它首先评估左侧。在左侧获得“未定义”之后,它移动到右侧,在此处将this._head指定为8.之后它返回true,但这部分不重要吗?我不知道它怎么会回来并影响“当前”变量?任何帮助将不胜感激,谢谢!

3 个答案:

答案 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)

  1. ||运算符返回左侧,如果它是“truthy”,否则,右侧 - 无论其真实性如何。它没有表达式转换为布尔值true / false!
    • undefined || (this._head = x)返回右侧
  2. 赋值运算符也返回一个值!
    • this._head = x在上例
    • 中返回8
  3. 第一个赋值运算符将值8赋给变量current

答案 2 :(得分:0)

您可以使用表达式

var current=this._head ? this._head : (this._head = x);