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);

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了