JavaScript&&运算符没有=

时间:2016-09-18 04:45:51

标签: javascript operators

我遇到了这句话:

while (char = word[i++]) {
  if (!current[char]) { break; }
  current = current[char];
  prefix += char;
  current.word && found.push(prefix); //??
}

AND(current.word&& found.push(prefix))运算符在这种情况下的含义是什么?

这是否相当于这两个表达式都是真的?我尝试将表达式分开并设置为true但我不认为这是等价的......

1 个答案:

答案 0 :(得分:4)

&&检查两边的两个表达式是否真实,即this AND this都是真实的。

规格说明

  

逻辑AND(&&)expr1 && expr2
  如果可以转换为false,则返回expr1;否则,返回expr2   因此,与其一起使用时   如果两个操作数都可以转换为布尔值&&,则返回true   真正;否则,返回false。

它始终从左到右检查,从左侧表达式

开始

知道这一点,如果&&左侧的表达式是假的,则没有理由检查右侧,因为如果第一个表达式是假的,结果将是假的。

换句话说,如果current.word是假的,它会在那里结束 如果current.word是真实的,则必须检查&&的右侧,然后执行found.push(prefix)以查看该表达式是假的还是真的。

更简单地说,它可以写成

if ( current.word ) found.push(prefix);

但有人聪明