可算是把绕来绕去的二进制-位操作符,给学完了。至少我学到了十之八九,你呢,,,
接下来是布尔操作符,它一共有三个,非(NOT),与(AND),或(OR)。
1,逻辑非(NOT),它用一个惊叹号(!)来表示,它可以用于ECMAScript的任何值。无论是什么类型,都会返回一个布尔值。
逻辑非操作符会先把操作数转换为一个布尔值,然后对其求反,规则啊,是下面这样的,要记住,这些都是细节。。:
!对象,返回false;
!空字符串,返回true;
!非空字符串,返回false;
!0,返回true;
!任意非0数值,包括Infinity,返回false;
!null,返回true;
!undefined,返回true;
(上面这些返回值,我每个都console.log打印出来看看,你在学这章的时候,有这样做吗?)
有时可以在网上看到 !!str,这种二个惊叹号的写法。这是同时对一个值使用二个逻辑非操作数。
实际上第一个逻辑非操作会直接任何值返回一个布尔值,第二个逻辑非操作则对此值求反。
为什么这样做呢?
因为这样实际上是模拟了 Boolean()转型函数的行为,结果是获得了这个值真正对应的布尔值。
这些知识点看起来很简单,毫无难度,但胜在细节。面试时许多兄弟们挂掉就是因为这些细碎的点不连贯,导致知识体系,断了。