javascript学习笔记---ECMAScript运算符(逻辑运算符)

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,发生错误

  • 逻辑 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。


  • 逻辑 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,就不再计算第二个运算数。


javascript学习笔记---ECMAScript运算符(逻辑运算符),布布扣,bubuko.com

时间: 2024-12-26 07:19:16

javascript学习笔记---ECMAScript运算符(逻辑运算符)的相关文章

javascript学习笔记---ECMAScript运算符(位运算符)

位运算符是在数字底层(即表示数字的 32 个数位)进行操作的. 位运算 NOT 位运算 NOT 由否定号(~)表示,它是 ECMAScript 中为数不多的与二进制算术有关的运算符之一. 位运算 NOT 是三步的处理过程: 把运算数转换成 32 位数字 把二进制数转换成它的二进制反码 把二进制数转换成浮点数 例如: var iNum1 = 25; //25 等于 00000000000000000000000000011001 var iNum2 = ~iNum1; //转换为 11111111

javascript学习笔记---ECMAScript运算符(一元运算符)

一元运算符只有一个参数,即要操作的对象或值.它们是 ECMAScript 中最简单的运算符. delete delete 运算符删除对以前定义的对象属性或方法的引用.例如:  var o = new Object;        o.name = "David";        alert(o.name); //输出 "David"        delete o.name;        alert(o.name);//输出 "undefined&quo

javascript学习笔记---ECMAScript运算符(乘性,加性,关系,等性,关系,赋值,逗号运算符)

乘性:乘法,除法,取模,(特殊数字[Infinity,-Infinity,NaN,0]需要注意) 加性:加减法(同样特殊数字注意) 关系运算符执行的是比较运算.每个关系运算符都返回一个布尔值. 常规比较:数字与数字,字符串与字符串(按字符代码数值比较) 数字和字符串比较:先将字符串转为数字再比较 ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象. 等号和非等号 在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它

javascript学习笔记---ECMAScript语法(引用类型)

引用类型通常叫做类(class). 本教程会讨论大量的 ECMAScript 预定义引用类型. 引用类型 引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 本教程会讨论大量的 ECMAScript 预定义引用类型. 从现在起,将重点讨论与已经讨论过的原始类型紧密相关的引用类型. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现"类"这个词.ECMAScript 定义了"对象定

javascript学习笔记---ECMAScript语法(辅助)

1.区分大小写. test与Test变量是两个不同的变量 2.变量是弱变量. 与C,java等等语言变量不是很一样. 如下java代码 ? 1 2 3 4 int i =0; //再次赋值 i = 10;//ok i = "hello";//wrong 类型不匹配 javascript ? 1 2 3 4 var i = 9; //再次赋值 i = 10;//ok i = "hello";//ok 但是不建议这么干,如此会给开发造成干扰,不明确变量的类型.(变量命名

javascript学习笔记---ECMAScript语法(变量)

变量声明关键字var: var i = 1: var t = "asd"; var test1 = "hi", test2 = "hello"; 声明变量不一定要初始化, var i;//ok 另一方面在使用变量前若未加关键字var,则此变量为全局变量(此特性需特别记住). 变量名字: 变量名需要遵守两条简单的规则: 第一个字符必须是字母.下划线(_)或美元符号($) 余下的字符可以是下划线.美元符号或任何字母或数字字符 命名变量规则: Came

javascript学习笔记---ECMAScript 语句

ECMAScript 语句: 进一步说是流程控制语句. 主要流程有:顺序,选择,循环. 顺序语句不用多说.(大括号中的语句基本都是顺序的) 选择语句: if (i > 30) {alert("大于 30");} else {alert("小于等于 30");}if (i > 30) { alert("大于 30"); } else if (i < 0) { alert("小于 0"); } else { al

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一

JavaScript学习笔记【2】表达式和运算符、语句、对象

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 表达式和运算符 语句 对象 表达式和运算符 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值undefined.元素列表末尾可以留下单个逗号,这时并不会创建一个新的值为undefined元素. 属性访问表达式,.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字.如果属性名称是一个保留字或者包含空格和标识符,或是一个数字(对于数组来说),则必须使用方括号的写法.当属性