阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 逻辑运算符

      !逻辑非

      在JavaScript中,truefalse 有些复杂。

      在大多数编程语言中,仅有布尔值 truefalse 表示true/false。

      在JavaScript中,如"ssss"这样的字符串值,也可以看作true(隐式转换)。

      !返回值

      • True(表达式或值计算为false的,都可以转为true)

        • 空字符串
        • 0
        • -0;
        • NaN
        • Null
        • Undefined
        • False
      • False(表达式或值计算为true的,都可以转为false)

        • 对象
        • 非空字符串
        • 非0数值(Infinity)

      特性;

      • 如果运算数的值为false则返回true,否则返回false;
      • 连续使用两次,可将任意类型转为布尔类型值;(!!相当于Boolean)
      console.log(!true);//false
      console.log(true && false);//false
      console.log(true || false);//true
      

      &&逻辑与

      规则

      只有第一个值是true的时候,才会返回第二个值;第一个值为false,则返回第一个值

      意是根据原理来返回的;&&是必须两个都为true才为true的;看取决于哪个值的

      • 第一个操作数的对象,返回第二个操作数(第一个为true了,关键取决于第二个值,所以返回第二个)
      • 第二个操作数是对象,如果想返回第二个对象,第一个必须为true;
      • 如果两个操作数都是对象,第一个是true,则返回第二个操作数;
      • 第一个操作数是null,返回null(第一个null已经是false了,后面第二个值无论是true-还是false已经不重要了,所以返回的是第一个值)
      • 第一个操作数是NaN,返回NaN(原理同上)
      • 第一个操作数是undefined,返回undefined(原理同上)

      特性

      • 当且进档两个运算数的值都是true时,才返回true,否则返回false(做if判断的时候)
      • 短路操作,当第一个操作数的值是false,则不再对第二个操作数进行求值(做变量赋值的时候)

      ||逻辑或

      规则

      两个操作数都是false的时候才为false;第一个操作数是true,则返回第一个数;

      无需对第二个值判断了,已经可以确定为true;如果第一个值为false的时候,返回第二个数;因为第一个已经是false了,值取决于第二个值,所以返回第二个值;

      • 第一个操作数是对象,返回第一个操作数
      • 第一个操作数值为false,返回第二个操作数
      • 两个操作数都是对象,返回第一个操作数
      • 两个操作数都是null,返回null;
      • 两个操作数都是NaN,返回NaN;
      • 两个操作数都是undefined,返回undefined

      特性

      • 当且进档两个运算数的值都是false时,才会烦false,否则返回true;
      • 如果第一个操作数值为true,则不会对第二个操作数进行求值;
      var a="",
          b="B有值";
      var result=a||"A的值是假的",
          result2=b||"B的值是假的";
      console.log(result);
      console.log(result2);
      
      目录
      目录