逻辑与:
逻辑与操作符由两个和号&&表示,有两个操作数。
两个操作数中有一个为false则返回false,两个都为true才会返回true。
- 如果第一个操作数为对象则返回第二个操作数。
- 如果第二个操作数为对象,则只有第一个操作数求值为true的时候才会返回该操作数
- 如果两个操作数都是对象,则返回第二个操作数。
- .如果第一个操作数为null,则返回null。
- 如果第一个操作数为NaN,则返回NaN。
- 如果第一个操作数为undefined,则返回undefined。
第一个操作数能够确定结果,则不会在对第二个操作数求值,如果第一个变量为true,第二个变量未声明会导致错误,如果第一个变量为false,就不会产生错误。
逻辑或:
逻辑或用两个竖线符号||表示,有两个操作数。
两个数中两个都为false才会返回false,只要有一个true都会返回true,如果有一个操作数不是布尔值,逻辑也不一定返回布尔值。
- 如果第一个操作数为对象,则返回第一个数。
- 如果第一个数求值为false,则返回第二个操作数。
- 两个操作数都是对象则返回第一个操作数。
- 如果两个操作数都是null,则返回null。
- 如果两个操作数都是NaN,则返回NaN。
- 如果两个数都是undefined,则返回undefined。
如果对第一个数求值是true,就不会再对第二个操作数求值了。
逻辑非:
逻辑非由一个感叹号!表示,无论这个值是什么数据类型,返回的都是布尔值,现将操作数转换为一个布尔值,然后对其求反。
- 如果操作数是对象,返回false。
- 如果操作数是一个空字符串,返回true。
- 如果操作数是一个非空字符串,返回false。
- 操作数是0,返回true。
- 操作数是任何非0(包括infinity),返回false。
- 操作数是null,返回true。
- 如果操作数是NaN,返回true。
- 如果操作数是undefined,返回true。