`
wyf
  • 浏览: 424828 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

Js逻辑与或操作符

    博客分类:
  • JS
 
阅读更多

       逻辑与操作可以应用于任何类型的操作数,而不仅仅是布尔值。在有一个操作数不是布尔值的情况 下,逻辑与操作就不一定返回布尔值;此时,它遵循下列规则:

 如果第一个操作数是对象,则返回第二个操作数;

 如果第二个操作数是对象,则只有在第一个操作数的求值结果为 true 的情况下才会返回该 对象;

 如果两个操作数都是对象,则返回第二个操作数;

 如果有一个操作数是 null,则返回 null;

 如果有一个操作数是 NaN,则返回 NaN;

 如果有一个操作数是 undefined,则返回 undefined。

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

 

var found = true;
var result = (found && someUndefinedVariable); // 这里会发生错误
alert(result); // 这一行不会执行

      在上面的代码中,当执行逻辑与操作时会发生错误,因为变量 someUndefinedVariable 没有声 明。由于变量 found 的值是 true,所以逻辑与操作符会继续对变量 someUndefinedVariable 求值。 但 someUndefinedVariable 尚未定义,因此就会导致错误。这说明不能在逻辑与操作中使用未定义 的值。如果像下面这个例中一样,将 found 的值设置为 false,就不会发生错误了:

var found = false;
var result = (found && someUndefinedVariable); // 不会发生错误
alert(result); // 会执行("false")

       在这个例子中,警告框会显示出来。无论变量 someUndefinedVariable 有没有定义,也永远不 会对它求值,因为第一个操作数的值是 false。而这也就意味着逻辑与操作的结果必定是 false,根本 用不着再对&&右侧的操作数求值了。在使用逻辑与操作符时要始终铭记它是一个短路操作符。

 

         与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值;此时,它遵循下 列规则:

 如果第一个操作数是对象,则返回第一个操作数;

 如果第一个操作数的求值结果为 false,则返回第二个操作数;

 如果两个操作数都是对象,则返回第一个操作数;

 如果两个操作数都是 null,则返回 null;

 如果两个操作数都是 NaN,则返回 NaN;

 如果两个操作数都是 undefined,则返回 undefined。

 

默认第一个操作数(经过转换)为true,返回第一个,否则返回第二个

 

与逻辑与操作符相似,逻辑或操作符也是短路操作符。也就是说,如果第一个操作数的求值结果为 true,就不会对第二个操作数求值了。下面看一个例子:

var found = true;
var result = (found || someUndefinedVariable); // 不会发生错误
alert(result); // 会执行("true")

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

var myObject = preferredObject || backupObject; 

 在这个例子中,变量 myObject 将被赋予等号后面两个值中的一个。变量 preferredObject 中包 含优先赋给变量 myObject 的值,变量 backupObject 负责在 preferredObject 中不包含有效值的情况下提供后备值。如果 preferredObject 的值不是 null,那么它的值将被赋给 myObject;如果 是 null,则将 backupObject 的值赋给 myObject。ECMAScript 程序的赋值语句经常会使用这种模式, 本书也将采用这种模式。

分享到:
评论

相关推荐

    javascript中 逻辑与或非和按位与或非的区别

    今天学习javascript的位操作符,对按位非的操作符(~)产生了疑问,因为以前学的非都是(!)就疑问是我自己记错了还是我买的书本版本太旧了。去百度后发现两者不一样,一个是按位非(~),一个是逻辑非(!)。...

    javascript运算符——逻辑运算符全面解析

    ’、逻辑与’&&’、逻辑或’||’3种,本文将介绍这三种逻辑运算符 逻辑非 逻辑非操作符由一个叹号(!)表示,可以应用于ECMAScript中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作...

    【JavaScript源代码】JavaScript中极易出错的操作符运算总结.docx

    JavaScript中极易出错的操作符运算总结  目录 算术运算符 非正常情况1: 有特殊值字面量参与的运算非正常情况2: 其他类型的数据参与数学运算。比较运算符 非正常情况1: 特殊值参与比较运算非正常情况2: 其他数据...

    JavaScript中的逻辑判断符&&、||与!介绍|angluo-javascript-117855.pdf

    主要介绍了JavaScript中的逻辑判断符&&、||与!介绍,本文讲解了逻辑与&&的处理规则、逻辑或||的处理规则、!操作符,需要的朋友可以参考下

    JavaScript中的各种操作符使用总结

    里我们说的操作符包括算数运算符和逻辑操作符等,包括布尔与赋值等,为大家进行了JavaScript中的各种操作符使用总结,需要的朋友可以参考下

    JavaScript语言参考手册

    逻辑操作符 简化运算 字符串操作符 特殊操作符 ?: (条件操作符) , (逗号操作符) delete new this typeof void 第三章 语句 这一章描述了所有 JavaScript 的语句。JavaScript 语句是用特定的语法由关键词组成的。...

    JavaScript中文参考手册

    逻辑操作符 简化运算 字符串操作符 特殊操作符 ?: (条件操作符) , (逗号操作符) delete new this typeof void 第三章 语句 这一章描述了所有 JavaScript 的语句。JavaScript 语句是用特定的语法由关键词...

    老生常谈javascript中逻辑运算符&&和||的返回值问题

    今天在做逻辑运算符的时候遇到一个小问题一直转不过弯来,var a=(undefined&&123)||(3||5)的返回值是什么? 首先是||的返回值问题: ||的返回值会返回最早遇到非以下类型的值: NaN null undefined 0 false; 所以3||...

    Javascript基础教程之比较操作符

    比较操作符 常用的比较操作符有 等于 == , 不等于!= , 大于 >, 小于 <,大于等于 >= ,小于等于 <= 代码如下:  [removed](“Study” == “study”);//false  [removed](“Study” < “study”); /...

    JS 操作符整理[推荐收藏]

    JS 操作符主要包括算术运算符,赋值运算符,比较(关系)运算符,逻辑运算符,串符(连接作用),条件运算符等

    JavaScript 布尔操作符解析 || !

    该操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。 下面说明下Boolean()转型函数的一组规则。 数据类型 转换为true的值 转换为false的值 Boolean true false String  任何非空字符串 “”(空...

    JavaScript DOM编程艺术(中文第2版)

    2.1 准备工作 2.2 语法 2.2.1 语句 2.2.2 注释 2.2.3 变量 2.2.4 数据类型 2.2.5 数组 2.2.6 对象 2.3 操作 2.4 条件语句 2.4.1 比较操作符 2.4.2 逻辑操作符 2.5 循环语句 2.5.1 while循环 2.5.2 for循环 2.6 函数 ...

    JavaScript 语言基础教程

    操作符和表达式:了解如何使用各种操作符进行计算和逻辑判断。 控制结构:学习条件语句和循环语句,控制程序的执行流程。 函数:学习如何定义和调用函数,以及理解作用域和闭包。 JavaScript 和 HTML/CSS 的交互 ...

    《精通Javascript+jQuery》光盘源码

     2.6.2 逻辑操作符  2.6.3 if语句  2.6.4 switch语句  2.7 循环语句  2.7.1 while语句  2.7.2 do…while语句  2.7.3 for语句  2.7.4 break和continue语句  2.7.5 for…in语句  2.7.6 实例:九九...

    JavaScript:DOM编程艺术(第2版)

    2.4.2 逻辑操作符 23 2.5 循环语句 24 2.5.1 while循环 24 2.5.2 for循环 25 2.6 函数 26 2.7 对象 29 2.7.1 内建对象 30 2.7.2 宿主对象 31 2.8 小结 31 第3章 dom 32 3.1 文档:dom中的“d” 32 3.2 ...

    浅谈javascript中的 “ && ” 和 “ || ”|javascript-64438.pdf

    && 操作符特点:逻辑运算表达式中只要一个是false就取false的值,都是true取后面,都是false取前面。 || 操作符特点:逻辑运算表达式中只要一个是true就取true的值,都是true取前面,都是false取后面。 在js逻辑运算...

    javascript中解析四则运算表达式的算法和示例

    中缀表示法(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4)。也就是我们最常用的算术表达式,中缀表达式对于人类来说比较容易理解,但是不易于计算机解析。 ...

    源文件程序天下JAVASCRIPT实例自学手册

    1.10 JavaScript与JScript、 VBScript 1.11 JavaScript与Java、Java applet 1.12 JavaScript的未来如何 1.13 本章小结 第2章 JavaScript语言入门 2.1 编程准备 2.1.1 编程术语 2.1.2 脚本执行顺序 2.1.3 大小写敏感 ...

Global site tag (gtag.js) - Google Analytics