我遇到了这句话:
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但我不认为这是等价的......
答案 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);
但有人聪明