zoukankan      html  css  js  c++  java
  • javascript中逻辑运算(||,&&,!)

      作为一个后端开发的程序员,一直就对JavaScript情有独钟,作为一门前后端通吃的语言,必须赞一下。而且之前很长一段时间都有在做JavaScript,一路都是和ie8死磕,磕完又找低版本的谷歌磕,坑坑洼洼不计其数,但是收获就是了解到JavaScript很多好用的特性,熟练使用这些特性,不仅能加快开发速度,还能让自己的代码看起来不至于那么low,这是每个前端程序员都想做到的!

      逻辑运算

      JavaScript中逻辑运算有3中:且(&&),或(||),非(!),不过在说这三种逻辑运算之前,先解释一下JavaScript中的布尔类型。

      JavaScript和其它高级语言一样,布尔类型有true和false两种,但是与其它语言不同的地方,也是JavaScript很奇妙的一个地方是,JavaScript中的任何类型都可以转化成布尔类型,转化规则如下:

      false:false,0,null,undefined,空字符串(“”和‘’),NaN

      true:上面可转换为false以外的所有数据都转换为true

        也就是说,我们以后再if条件判断中,很多时候没有比较去使用等于去判断,而是直接使用要判断的对象就可以了,比如下面的代码:

            var a;
            if (a == undefined) {
                console.log("a is undefined");
            } else {
                console.log("a is " + a);
            }

      直接使用  

            var a;
            if (a) {
                console.log("a is undefined");
            } else {
                console.log("a is " + a);
            }

      或者直接使用三元运算符:  

            var a;
            a ? console.log("a is " + a) : console.log("a is undefined");

      当然这么用要具体需求具体看,毕竟0和空字符串也会被转换成false,但是0和空字符串有时却又是合法的业务逻辑,所以这点要注意

      言归正传,一般的,我们所说的逻辑运算,都是对布尔类型的运算,与(&&)运算时当且仅当两边都是true时才返回true,否则返回false,或(||)运算是当且仅当两边都是false时返回false,否则返回true,非(!)运算时取反,当判断是true时返回false,当判断是false时返回true,注意了,这是一般的思维,毕竟像java,C#等等高级语言都是这样的,JavaScript的用法也基本是这样,但是又不一样!JavaScript的逻辑运算规则如下:  

      与(&&):如果左边表达式判断是false,则返回左边表达式的值,否则返回右边表达式的值

      或(||):如果左边表达式判断为true,则返回左边表达式的值,否则返回右边表达式的值

      非(!):如果表达式判断为true,则返回false,否则返回true

      注意了,与(&&)和或(||)运算最终返回的是表达式的值!回的是表达式的值!回的是表达式的值!重要的事情说三遍。这个值不一定是布尔类型的true或者false,可以是其他类型的值!!!这有什么用呢?

      曾几何时,我们是否写过这样的代码:   

      function f(a, b) {
          if (a == null) {
              a = {}
          }
    
          if (b != null) {
              b.say();
          }
       }

      我们可以简化成:  

        function f(a, b) {
            a = a || {};
            b && b.say();
        }

      这样写,一方面代码量少了,另一方面代码不会显得那么low,总之,就是记住与(&&)和或(||)的运算规则,从左想让开始运算,并返回表达式的值,而非true或false。当然,如果表达式返回的是true或者false,那与(&&)和或(||)返回的也就是true或者false了。而我们经常会写一些简单的if判断,一个判断做一个事,另一个判断做另一件个事,这样判断完全可以用与(&&)和或(||)来代替,让代码看起来更美观,换句话说就是,与(&&)和或(||)的作用是可以处理逻辑运算,另一个重要的作用就是用来代替if做判断!

      如果你看一些开源项目的源码,比如jquery等,与(&&)和或(||)在里面用的是很多的,多数都是代替if做判断!

      非(!)运算就比较简单了,一般就是拿来取反的,对true返回false,对false返回true,但是还有一种特性,上面的运算规则可以看到,非(!)运算返回的始终是布尔类型,这样,当我们确切需要某些值必须是布尔类型是,这个运算就很有用,比如jQuery的each函数,当且仅当函数返回false时,就会跳出遍历,如下面的代码:  

            var a = [1, null, 3];
            $.each(a, function (i, t) {
                console.log(i, t);
                if (!t) {
                    return false;//跳出循环
                }
            })

      可以写成:  

            var a = [1, null, 3];
            $.each(a, function (i, t) {
                console.log(i, t);
                return !!t;
            })

      总之,熟悉逻辑运算的规则,熟练使用逻辑,可以简化我们的代码,使代码看起来简洁舒适

  • 相关阅读:
    [BZOJ2038]小Z的袜子
    [BZOJ5016]一个简单的询问
    [BZOJ1008][HNOI2008]越狱
    [FZU2254]英语考试
    利用Map 的merge方法统计数量
    List 原生态类型
    try-with-resource 关闭 io流
    利用构建器创建对象
    linux 安装 vault
    git 上传文件
  • 原文地址:https://www.cnblogs.com/shanfeng1000/p/11866145.html
Copyright © 2011-2022 走看看