码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript的逻辑运算符

时间:2015-06-07 23:23:25      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符:逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)。

 

一、逻辑与(AND) :&&

var box = (5 > 4) && (4 > 3) //true,两边都为 true,返回 true

技术分享
如果两边的操作数有一个操作数不是布尔值的情况下,与运算就不一定返回布尔值,此时,遵循已下规则:
  1.第一个操作数是对象,则返回第二个操作数;
  2.第二个操作数是对象,则第一个操作数返回 true,才返回第二个操作数,否则返回 false;
  3.有一个操作数是 null,则返回 null;
  4.有一个操作数是 undefined,则返回 undefined。

    var box = {} && (5 > 4); //true,返回第二个操作数
    var box = (5 > 4) && {}; //[object Object]
    var box = (3 > 4) && 对象; //false
    var box = (5 > 4) && null; //null
    var box = null && (5 > 4);
    var box = undefined && (5 > 4);//undefined
    var box = (5 > 4) && undefined;//同上 

逻辑与运算符属于短路操作,顾名思义,如果第一个操作数返回是 false,第二个数不管是 true 还是 false 都不再运算直接返回的 false。

var box = true && age; //出错,age 未定义
var box = false && age; //false,不执行 age 了

 

 



二、逻辑或(OR):||

var box = (9 > 7) || (7 > 8); //true,两边只要有一边是 true,返回 true

技术分享
如果两边的操作数有一个操作数不是布尔值的情况下,逻辑与运算就不一定返回布尔值,此时,遵循已下规则:
  1.第一个操作数是对象,则返回第一个操作数;
  2.第一个操作数的求值结果为 false,则返回第二个操作数;
  3.两个操作数都是对象,则返回第一个操作数;
  4.两个操作数都是 null,则返回 null;
  5.两个操作数都是 NaN,则返回 NaN;
  6.两个操作数都是 undefined,则返回 undefined;

var box = {} || (5 > 3); //[object Object]
var box = (5 > 3) || {}; //true
var box = {} || {} ; //[object Object]
var box = null || null; //null
var box = NaN || NaN; //NaN
var box = undefined || undefined; //undefined

和逻辑与运算符相似,逻辑或运算符也是短路操作。当第一操作数的求值结果为 true,就不会对第二个操作数求值了。

var box = true || age; //true
var box = false || age; //出错,age 未定义

我们可以利用逻辑或运算符这一特性来避免为变量赋 null 或 undefined 值。

var box = oneObject || twoObject; //把其中一个有效变量值赋给 box

 

 

 


三、逻辑非(NOT):!
逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。它的流程是:先将这个值转换成布尔值,然后取反,规则如下:
  1.操作数是一个对象,返回 false;
  2.操作数是一个空字符串,返回 true;
  3.操作数是一个非空字符串,返回 false;
  4.操作数是数值 0,返回 true;
  5.操作数是任意非 0 数值(包括 Infinity),false;
  6.操作数是 null,返回 true;
  7.操作数是 NaN,返回 true;
  8.操作数是 undefined,返回 true;

var box = !(5 > 4); //false
var box = !{}; //false
var box = !‘‘; //true
var box = !‘Lee‘; //false
var box = !0; //true
var box = !8; //false
var box = !null; //true
var box = !NaN; //true
var box = !undefined; //true

使用一次逻辑非运算符,流程是将值转成布尔值然后取反。而使用两次逻辑非运算符就是将值转成成布尔值取反再取反,相当于对值进行 Boolean()转型函数处理。

var box = !!0; //false
var box = !!NaN; //false

 

 

JavaScript的逻辑运算符

标签:

原文地址:http://www.cnblogs.com/LO-ME/p/3580987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!