×

ECMAScript 基础

ECMAScript 语法ECMAScript 变量ECMAScript 关键字ECMAScript 保留字ECMAScript 原始值和引用值ECMAScript 原始类型ECMAScript 引用类型

ECMAScript 运算符

ECMAScript 位运算符ECMAScript Boolean 运算符ECMAScript 乘性运算符ECMAScript 加性运算符ECMAScript 关系运算符ECMAScript 等性运算符ECMAScript 条件运算符ECMAScript 赋值运算符ECMAScript 逗号运算符

ECMAScript 语句

ECMAScript if 语句ECMAScript 迭代语句ECMAScript 标签语句ECMAScript break & continueECMAScript with 语句ECMAScript switch 语句

ECMAScript 函数

ECMAScript 函数概述ECMAScript arguments 对象ECMAScript Function 对象ECMAScript 闭包(closure)

ECMAScript 对象

ECMAScript 面向对象技术ECMAScript 对象应用ECMAScript 对象类型ECMAScript 对象作用域ECMAScript 定义类或对象ECMAScript 修改对象

ECMAScript 继承

ECMAScript 继承机制实例ECMAScript 继承机制实现

ECMAScript 6 入门

ECMAScript 6 简介ECMAScript 6 let和const命令ECMAScript 6 变量的解构赋值ECMAScript 6 字符串的扩展ECMAScript 6 正则的扩展ECMAScript 6 数值的扩展ECMAScript 6 数组的扩展ECMAScript 6 函数的扩展ECMAScript 6 对象的扩展ECMAScript 6 SymbolECMAScript 6 Proxy和ReflectECMAScript 6 二进制数组ECMAScript 6 Set 和 MapECMAScript 6 Iterator和for...of循环ECMAScript 6 Generator 函数ECMAScript 6 Promise对象ECMAScript 6 异步操作和Async函数ECMAScript 6 ClassECMAScript 6 修饰器(Decorator)ECMAScript 6 ModuleECMAScript 6 编程风格读懂 ECMAScript 规格ECMAScript 6 参考链接

ECMAScript Boolean 运算符


Boolean 运算符得以让程序语言得以正常运行,因此它起到十分重要的作用。

Boolean 运算符有三种:NOT、AND 和 OR。

ToBoolean 操作

在学习各种逻辑运算符之前,让我们先了解一下ECMAScript-262 v5规范中描述的ToBoolean操作。

抽象操作ToBoolean将其参数按照下表中的规则转换为逻辑值:

参数类型 结果
Undefined false
Null false
Boolean 结果等于输入的参数(不转换)
Number 如果参数为 +0, -0 或 NaN,则结果为 false;否则为 true。
String 如果参数为空字符串,则结果为 false;否则为 true。
Object true

逻辑 NOT 运算符

在ECMAScript中,逻辑NOT运算符与C和Java中的逻辑NOT运算符相同,都由感叹号(!)表示。

与逻辑OR和逻辑AND运算符不同的是,逻辑NOT运算符返回的一定是Boolean值

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

  • 如果运算数是对象,返回false
  • 如果运算数是数字0,返回true
  • 如果运算数是0以外的任何数字,返回false
  • 如果运算数是null,返回true
  • 如果运算数是NaN,返回true
  • 如果运算数是undefined,发生错误

通常,该运算符用于控制循环:

var bFound = false;
var i = 0;

while (!bFound)
 {
  if (aValue[i] == vSearchValues) {
    bFound = true;
  } else {
    i++;
  }
}

在这个例子中,Boolean变量(bFound)用于记录检索是否成功。找到问题中的数据项时,bFound将被设置为true,!bFound将等于false,意味着运行将跳出while 循环。

判断ECMAScript变量的Boolean值时,也可以使用逻辑NOT运算符。这样做需要在一行代码中使用两个NOT运算符。无论运算数是什么类型,第一个NOT运算符返回Boolean值。第二个NOT将对该Boolean值求负,从而给出变量真正的Boolean值。

var bFalse = false;
var sRed = "red";
var iZero = 0;
var iThreeFourFive = 345;
var oObject = new Object;

document.write("bFalse 的逻辑值是 " + (!!bFalse));
document.write("sRed 的逻辑值是 " + (!!sRed));
document.write("iZero 的逻辑值是 " + (!!iZero));
document.write("iThreeFourFive 的逻辑值是 " + (!!iThreeFourFive));
document.write("oObject 的逻辑值是 " + (!!oObject));

结果:

bFalse 的逻辑值是 false
sRed 的逻辑值是 true
iZero 的逻辑值是 false
iThreeFourFive 的逻辑值是 true
oObject 的逻辑值是 true 

逻辑 AND 运算符

在ECMAScript中,逻辑AND运算符用双和号(&&)表示:

例如:

var bTrue = true;
var bFalse = false;
var bResult = bTrue && bFalse;

下面的真值表描述了逻辑AND运算符的行为:

运算数 1 运算数 2 结果
true true true
true false false
false true false
false false false

逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。

如果某个运算数不是原始的Boolean型值,逻辑AND运算并不一定返回Boolean值:

  • 如果第一个运算数是对象,第二个是Boolean值,返回第一个对象。
  • 如果两个运算数都是对象,返回第二个对象。
  • 如果某个运算数是null,返回null。
  • 如果某个运算数是NaN,返回NaN。
  • 如果某个运算数是undefined,发生错误。

与Java中的逻辑AND运算相似,ECMAScript中的逻辑AND运算也是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数。对于逻辑AND运算来说,如果第一个运算数是false,那么无论第二个运算数的值是什么,结果都不可能等于true。

考虑下面的例子:

var bTrue = true;
var bResult = (bTrue && bUnknown);	//发生错误
alert(bResult);			//这一行不会执行

这段代码在进行逻辑AND运算时将引发错误,因为变量bUnknown是未定义的。变量bTrue的值为true,因为逻辑AND运算将继续计算变量bUnknown。这样做就会引发错误,因为bUnknown的值是undefined,不能用于逻辑AND运算。

如果修改这个例子,把第一个数设为false,那么就不会发生错误:

var bFalse = false;
var bResult = (bFalse && bUnknown);
alert(bResult);			//输出 "false"

在这段代码中,脚本将输出逻辑AND运算返回的值,即字符串"false"。即使变量bUnknown的值为undefined,它也不会被计算,因为第一个运算数的值是false。

提示:在使用逻辑AND运算符时,必须记住它的这种简便计算特性。

逻辑 OR 运算符

ECMAScript中的逻辑OR运算符与Java中的相同,都由双竖线(||)表示:

var bTrue = true;
var bFalse = false;
var bResult = bTrue || bFalse;

下面的真值表描述了逻辑OR运算符的行为:

运算数 1 运算数 2 结果
true true true
true false true
false true true
false false false

与逻辑AND运算符相似,如果某个运算数不是Boolean值,逻辑OR运算并不一定返回Boolean值:

  • 如果一个运算数是对象,并且该对象左边的运算数值均为false,则返回该对象。
  • 如果两个运算数都是对象,返回第一个对象。
  • 如果最后一个运算数是null,并且其他运算数值均为false,则返回null。
  • 如果最后一个运算数是NaN,并且其他运算数值均为false,则返回NaN。
  • 如果某个运算数是undefined,发生错误。

与逻辑AND运算符一样,逻辑OR运算也是简便运算。对于逻辑OR运算符来说,如果第一个运算数值为true,就不再计算第二个运算数。

例如:

var bTrue = true;
var bResult = (bTrue || bUnknown);
alert(bResult);			//输出 "true"

与前面的例子相同,变量bUnknown是未定义的。不过,由于变量bTrue的值为true,bUnknown不会被计算,因此输出的是"true"。

如果把bTrue改为false,将发生错误:

var bFalse = false;
var bResult = (bFalse || bUnknown);	//发生错误
alert(bResult);			//不会执行这一行

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)