布尔操作符-逻辑非(!)

216 阅读1分钟

逻辑非操作符由一个叹号(!)表示,可以应用于 javajScript 中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。

也就是说,逻辑非操作符遵循下列规则:

 如果操作数是一个对象,返回 false;

 如果操作数是一个空字符串,返回 true;

 如果操作数是一个非空字符串,返回 false;

 如果操作数是数值 0,返回 true;

 如果操作数是任意非 0 数值(包括 Infinity),返回 false;

 如果操作数是 null,返回 true;

 如果操作数是 NaN,返回 true;

 如果操作数是 undefined,返回 true。

下面举例说明:

alert(!false); // true

alert(!"blue"); // false

alert(!0); // true

alert(!NaN); // true

alert(!""); // true

alert(!123); // false

逻辑非操作符也可以用于将一个值转换为与其对应的布尔值。那么可以同时使用两个逻辑非操作符,实际上就会模拟 Boolean()转型函数的行为。其中,第一个逻辑非操作会基于无论什么操作数返回一个布尔值,而第二个逻辑非操作则对该布尔值求反,于是就得到了这个值真正对应的布尔值。举例:

alert(!123); // true