操作符系列(1)

来源:互联网 发布:柯维时间矩阵图 编辑:程序博客网 时间:2024/06/06 11:40

布尔操作符

1、逻辑非

这个符号应用于所有值,无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非会先将需要他操作的数值转换为一个布尔值,然后再求反。

  • 如果这个操作数是一个对象,返回false
  • 如果这个操作数是一个空字符串,返回true,非空为false
  • 如果操作数值为0,则返回true
  • 如果操作数是任意非0数值(包括Infinity),返回false
  • 如果是null,则返回true;
  • 如果是NaN,则返回true;
  • 如果是undefine则返回true;

如果同时使用两次逻辑非运算符,实际上就辉模拟Boolean()转型函数的行为,最终结果相同.

2、逻辑与

两个&&号组成

两个都为真才真,一个为假就是假.

  • 如果第一个操作数是对象,则返回第二个操作数
  • 如果第二个操作数是对象,则只有第一个操作数求值结果为true的情况下才会返回该对象
  • 如果两个操作数都是对象,则返回第二个
  • 如果有一个是null,则返回null
  • 如果有一个是NaN,则返回NaN
  • 如果有一个是undefined,则返回undefined。

如果第一个操作数为假,则后面的不执行

3、逻辑或

两个||组成

两边的数值有一个为真就是真

  • 如果第一个操作数是对象,则返回第一个操作数。
  • 如果第一个操作数的求值结果是false,则返回第二个操作数;
  • 如果两个操作数都是对象,则返回第一个操作数,
  • 如果两个都是Null,则返回null
  • 如果两个都是NaN,则返回NaN
  • 如果两个都是undefined,则返回undefined

同上都是短路运算,要是第一个操作数为真,后面的操作数就不执行

逻辑或语句可以用于避免给变量赋上null或者undefined值

比如var myObj=a || b;
a包含优先赋给myObj的值,而b负责在a没有有效值的时候提供后备值