最近在看JavaScript高级编程第三版 看到第三章中逻辑与的有关内容(P45) 发现对于逻辑与的规则讲解的不是特别理解 书中是这么说的
逻辑与可以应用于任何类型的操作数,而不仅是布尔值。存在一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值; 此时,它遵循以下规则:
1. 如果第一个操作数是对象,则返回第二个操作数;
2. 如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;
3. 如果两个操作数都是对象,则返回第二个操作数;
4. 如果有一个操作数是null,则返回null;
5. 如果由一个操作数是NaN,则返回NaN;
6. 如果一个操作数是undefined,则返回undefined.
我觉得这六条规则可以这么理解 逻辑与&&操作符
1. 计算第一个操作数的逻辑值(同用boolean()将操作数转换的结果);
2. 若求得的逻辑值为假,则直接返回第一个操作数,
若求得的逻辑值为真,则直接返回第二个操作数。
A&&B 其实类似 A?B:A 的功能。
注意逻辑与在测试第一个操作数为假时,返回的是操作数本身,而不是操作数的逻辑值。