zoukankan      html  css  js  c++  java
  • JavascriptBoolean运算符

    Boolean运算符有3种:

    1.逻辑NOT

    逻辑NOT由!表示.与逻辑OR和逻辑AND运算符不同的是:逻辑NOT运算符返回的一定是Boolean值.

    逻辑NOT运算符的行为如下:

      • 如果运算数是对象,返回false
      • 如果运算数是0以外的其他任何数字,返回false
      • 如果运算数是0,返回true
      • 如果运算数是null,返回true
      • 如果运算数是NaN,返回true
      • 如果运算数是undefined,发生错误
      • 对Boolean值求非,从而得到真正的Boolean值

    例子:

            function display(value){
                document.write(value+"<br/>");
            }
            
            display(!new Object());        
            display(!100);
            display(!0);
            display(!null);
            display(!NaN);
            display(!true);
            display(!false);
            
            //undefined
            display(!ss);

    结果:

    image

    总结:

    • 如果运算数是0,null,NaN以及未定义的值,则求非之后,结果为true
    • 如果运算数是0以外的任何数字或对象,则求非之后,结果为false

    2.逻辑AND运算符

    逻辑AND运算符由&&表示.逻辑AND是简便运算,即:如果第一个运算数决定了结果,就不再计算第二个运算数,对于逻辑与来说,如果第一个运算数是false,无论第二个运算数的值是什么,都不可能等于true.

    下面采用真值的方式来描述:

    第一个操作数 第二个操作数 结果
    true true true
    true false false
    false true false
    false false false

    逻辑AND运算符的运算数可以是任何类型的,不止是Boolean值.如果某个运算数不是原始的Boolean值,逻辑AND并不一定返回Boolean值.

      • 如果第一个运算数是对象,那么返回第二个运算数
      • 如果某个运算数是null,则返回null
      • 如果某个运算数是NaN,则返回NaN
      • 如果某个运算数是undefined,则发生错误

    例子:

            function display(value){
                document.write(value+"<br/>");
            }
            
            var trueValue = true;
            var falseValue = false;
            
            var obj1 = new Object();
            obj1.name="obj1";
            
            var obj2 =new Object();
            obj2.name="obj2";
            
            var result;
            //如果第一个运算数是对象,另一个运算数是Boolean值,则返回Boolean值
            result = obj1 && trueValue;
            display(result); 
            result = obj1 && falseValue;
            display(result); 
            
            //如果第一个运算数是Boolean值,则会按照简便运算方式运行
            result = trueValue && obj1;//obj1 && true;
            display(result.name);
            result = falseValue && obj1;
            display(result);  
            display(trueValue && 'www')
            
            
            //如果两个运算数都是对象,则返回第二个对象
            result = obj1 && obj2;
            display(result.name);  
            
            //如果某个运算数是null,则返回null
            result = obj1 && null;
            display(result);
            
            //如果某个运算数是NaN,则返回NaN
            result = obj1 && NaN;
            display(result);
            
            //如果某个运算数是undefined,则发生错误
            result = obj1 && ss;
            display(result);

    结果:

    image

    总结:

    • 当变量为null,NaN以及未定义值的时候和false一样,拥有否决权,分别返回null,NaN,undefined.
    • 当运算数为对象时,都将通过运算.如果第一个运算数通过运算,那么将返回第二个运算数.
    • 当运算数未被声明时,引发错误.

    3.逻辑OR运算符

    逻辑OR运算符由||表示.逻辑OR运算符也是简便运算,如果第一个运算数为true,则不再计算第二个运算数.

    下面采用真值的方式来描述:

    第一个操作数 第二个操作数 结果
    true true true
    true false true
    false true true
    false false false

    逻辑OR运算符的运算数可以是任何类型的,不止是Boolean值.如果某个运算数不是原始的Boolean值,逻辑OR并不一定返回Boolean值.

      • 如果第一个运算数是对象,则返回该对象
      • 如果第一个运算数为false,null,NaN,undefined,第二个运算数为null,则返回null
      • 如果第一个运算数为false,null,NaN,undefined,第二个运算数为NaN,则返回NaN
      • 如果第一个运算数为false,null,NaN,undefined,第二个运算数为undefined,则引发错误.

    例子:

            function display(value){
                document.write(value+"<br/>");
            }
            
            var trueValue = true;
            var falseValue = false;
            
            var obj1 = new Object();
            obj1.name="obj1";
            
            var obj2 =new Object();
            obj2.name="obj2";
            
            var result;       
            
            //如果第一个运算数是对象,则返回该对象
            result = obj1 || trueValue;
            display(result.name); 
            result = obj1 || falseValue;
            display(result.name);                 
            result = obj1 || obj2;
            display(result.name);  
            
            //如果第一个运算数为false,null,NaN,undefined,第二个运算数为null,则返回null
            display(false || null);
            
            //如果第一个运算数为false,null,NaN,undefined,第二个运算数为NaN,则返回NaN
            display(null || NaN);
            
            //如果第一个运算数为false,null,NaN,undefined,第二个运算数为undefined,则引发错误
            display(NaN || ss);
            display(ss || ss);

    结果:

    image

  • 相关阅读:
    【scala】定义变量和函数
    【python】self用法详解
    【Hive】自定义函数
    【Java】抽象类和接口
    Linux中的wheel用户组是什么?
    CentOS6.9切换root用户su root输入正确密码后一直提示Incorrect password,如何解决?
    CentOS7.X中使用yum安装nginx的方法
    Win10提示“因为文件共享不安全,所以你不能连接到文件共享”如何处理
    vim编辑器-多行加注释与去注释
    CentOS7.4用yum安装并配置MySQL5.7
  • 原文地址:https://www.cnblogs.com/oneword/p/1631344.html
Copyright © 2011-2022 走看看