首页 > 代码库 > JS基本概念 -- 操作符 -- 布尔操作符

JS基本概念 -- 操作符 -- 布尔操作符

布尔操作符一共有三个: 非(Not)、与(AND)、或(OR)

  1. 逻辑非逻辑非操作符由一个叹号(!)表示,可以应用于ECMAScript中的任何值。无论这个值是什么类型,这个操作符都会返回一个布尔值。逻辑非操作符首先将他的操作数转换为一个布尔值,对其求反。
    //1.如果操作数是一个对象,返回falsevar o = {    name: "ss"};alert(!o);    //falsevar o1 = {};alert(!o1);    //false//2.如果操作数是一个空字符串,返回truevar str1 = "";alert(!str1);    //true//3.如果操作数是一个非空字符串,返回falsevar str2 = "name";alert(!str2);    //false//4.如果操作数值是0,返回truevar num = 0;alert(!num);    //true//5.如果操作数是任意非0数值(包括Infinity),返回falsevar num1 = 23;alert(!num1);    //falsevar num2 = Number.MAX_VALUE * Number.MAX_VALUE;alert(!num2);    //false//6.如果操作数是null,返回truevar str3 = null;alert(!str3);    //true//7.如果操作数是NaN,返回truevar str4 = "ccc";str4++;alert(str4);    //NaNalert(!str4);    //true//8.如果操作数是undefined,返回truevar val;alert(val);    //undefinedalert(!val);//true

    逻辑非操作符也可用于将一个值转换为与其对应的布尔值。而同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数的行为。最终结果与对这个值使用Boolean()函数相同。

    alert(!!"blue"); //truealert(!!0);        //falsealert(!!NaN);    //falsealert(!!"");    //false
  2. 逻辑与

    逻辑与操作符由两个和号(&&)

    技术分享

    逻辑与属于短路操作,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。对于逻辑与操作而言,如果第一个操作数是false,则无论第二个操作数是什么值,结果都不在可能是true。

    var found = true;var result = (found && someUndefinedVariable);    //这里会发生错误alert(result);    //这一行不会执行//上述代码会发生错误,因为变量someUndefinedVariable没有声明。由于found的值是true,所以逻辑与操作符会继续对后面的变量求值。var found1 = false;var result1 = (found1 && someUndefinedVariable);    alert(result1);    //false
  3. 逻辑或

    逻辑或操作符由两个竖线符号( || )表示,有两个操作数。

    技术分享

    逻辑或操作符也是短路操作,如果第一个操作数的求值结果为true,就不会对第二个操作数求值了。

    var found = false;var result = (found || someUndefinedVariable);    //这里会发生错误alert(result);    //这一行不会执行//上述代码会发生错误,因为变量someUndefinedVariable没有声明。由于found的值是false,所以逻辑与操作符会继续对后面的变量求值。var found1 = true;var result1 = (found1 || someUndefinedVariable);    alert(result1);    //true

    我们可以利用逻辑或的这一行为来避免为变量赋null 或 undefined值。

    var preferrdObject;var backupObject = "ccc"var myObject = preferrdObject || backupObject;alert(myObject);    //ccc/* *变量myObject将被赋予等号后面两个值中的一个。变量preferrdObject会优先赋给myObject值。 *变量backupObject负责在preferrdObject中不包含有效值的情况下提供后备值. *如果preferrdObject的值不是null,那么将他的值赋给myObject *如果preferrdObject的值是null,则将backupObject的值赋给myObject */

     

 

JS基本概念 -- 操作符 -- 布尔操作符