`
apple_wxs
  • 浏览: 103268 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

运算符 && 和 || 的返回值

阅读更多
今天才知道,原来 && 和|| 的返回值是这样计算的
&&首先计算其左边的表达式,如果它的值为false或可被转换为false(null、NaN、0或undefined),那么将返回左边表达式的值,否则,它将计算右边的表达式, 并返回这个表达式结果作为 &&运算的结果。
||首先计算其左边的表达式,如果它的值不为false或不可被转换为false(null、NaN、0或undefined),那么将返回左边表达式的值,否则,它将计算右边的表达式,
并返回这个表达式结果作为 &&运算的结果。
<HTML>
 <HEAD>
  <TITLE> 运算符&&和||的返回值 </TITLE>
 </HEAD>
 <BODY>
 &&首先计算其左边的表达式,如果它的值<font color=blue>为false</font>或<font color=blue>可被转换为false</font><font color=red>(null、NaN、0或undefined)</font>,那么将返回左边表达式的值,否则,它将计算右边的表达式,
 并返回这个表达式结果作为 &&运算的结果。<br>
||首先计算其左边的表达式,如果它的值<font color=blue>不为false</font>或<font color=blue>不可被转换为false</font><font color=red>(null、NaN、0或undefined)</font>,那么将返回左边表达式的值,否则,它将计算右边的表达式,
 并返回这个表达式结果作为 &&运算的结果。
 <hr>
  <SCRIPT LANGUAGE="JavaScript">
	function dwn(s)
	{
		document.write(s + "<br/>");
	}

	dwn("null && 33 = " + (null && 33));//null
	dwn("NaN && 33 = " + (NaN && 33));//NaN
	dwn("0 && 33 = " + (0 && 33));//0
	dwn("undefined && 33 = " + (undefined && 33));//undefined
	dwn("true && 33 = " + (true && 33));//33
	dwn("false && 33 = " + (false && 33));//false
	dwn("33 && 44 = " + (33 && 44));//44
	dwn("---------");

	dwn("null || 33 = " + (null || 33));//33
	dwn("NaN || 33 = " + (NaN || 33));//33
	dwn("0 || 33 = " + (0 || 33));//33
	dwn("undefined || 33 = " + (undefined || 33));//33
	dwn("true || 33 = " + (true || 33));//true
	dwn("false || 33 = " + (false || 33));//33
	dwn("33 || 44 = " + (33 || 44));//33
	
</SCRIPT>
<hr>
同时javascript中 if (expression) statement; 语句的判断也是<br>
看 expression 是否是不是 false 或 能不能转换成false(null、NaN、0或undefined)<br>
如果能 则不执行 statement; 否则就执行 statement;
<hr/>
<SCRIPT LANGUAGE="JavaScript">
<!--
	if (null)
		dwn("null test");
	if (0)
		dwn("0 test");
	if (undefined)
		dwn("undefined test");
	if (NaN)
		dwn("NaN test");
	if (444)
		dwn("444 test");
//-->
</SCRIPT>
<hr>
由此可见,if (a==b)dosth();和a==b&&dosth();或a!=b||dosth()等价

 </BODY>
</HTML>
分享到:
评论

相关推荐

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

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

    c0扩充编译器,实现三种优化,北航计算机

    C0文法 加法运算符> ::= +|- 乘法运算符> ::= * |/ 关系运算符> ::= ||>|>=|!=|== 字符> ::= _|a|...|z|A|...|Z ...注:返回值为void类型的子函数不允许出现在表达式中

    扩充C0编译器要求 北航计算机用

    C0文法 加法运算符> ::= +|- 乘法运算符> ::= * |/ 关系运算符> ::= ||>|>=|!=|== 字符> ::= _|a|...|z|A|...|Z ...注:返回值为void类型的子函数不允许出现在表达式中

    C++_运算符重载_各类详细介绍

    C++_运算符重载_各类详细介绍 仅供参考

    测量程序编制 - python 48数据类型:Set(集合)-交集.pptx

    图 1 中,有 2 个集合,分别为 set1={1,2,3} 和 set2={3,4,5},它们既有相同的元素,也有不同的元素。以这两个集合为例,分别做不同运算的结果 Set(集合)——交集 1、交集 1)运算符 & 2)intersection() 方法 3)...

    条件运算符中的细节

    三目条件运算符: 表达式1 ? 表达式2 :表达式3 表达式1是一个boolean类型的值。 一 表达式2和表达式3都是变量: 返回值的类型 往两者类型大的方向转(byte) //特殊情况(含char类型) char和一个byte/short/int...

    simple_shell:simple_shell

    返回值,$ pid $#个参数和$ 0-9(虽然目前还不是完美的sh模仿) 逻辑运算符&& / || 多行连续; 命令分隔符〜扩展到当前用户的主目录未封闭的多行报价连续\转义运行脚本文件以及来自标准输入的命令内建: 帮助退出...

    simple_shell:类似于sh的定制linux shell

    返回值,$ pid $#个参数和$ 0-9(虽然目前还不是完美的sh模仿) 逻辑运算符&& / || 多行连续; 命令分隔符〜扩展到当前用户的主目录未封闭的多行报价连续\转义运行脚本文件以及来自标准输入的命令内建: 帮助退出...

    c++_运算符重载

    该ppt详细介绍了c++中的运算符重载,对学习者很有帮助。

    swift 学习day2 基本运算符

    如:赋值符(=)不返回值,以防止把想要判断相等运算符(==)的地方写成赋值符导致的错误。算术运算符(+,-,*,/,%等)会检测并不允许值溢出,以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致...

    MySql运算符详解!!!

    其返回值为布尔型,真值 (1或true)和假值(0或false)。位运算符,包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算符。位运算必须先将数据转换为二进制,然后在二进制格式下进行操作,运算完成后...

    Python程序基础:Python中的运算符.pptx

    Python的逻辑运算符包括and(与)、or(或)、not(非)3种,与C/C++、Java等语言不同的是,Python中逻辑运算的返回值不一定是布尔值。;;2.2.5 成员运算符;2.2.6 身份运算符;2.2.7 位运算符;2.2.7 位运算符;2.2.8 ...

    2019千峰Python超详细入门教程(百度云盘分享).docx

    │ 千锋Python教程:01.python概述和工具的安装.mp4 │ 千锋Python教程:02.数据存储与二进制操作1.mp4 │ 千锋Python教程:03.数据存储与二进制操作2.mp4 │ 千锋Python教程:04.第一个Python程序与注释及输入输出....

    c0文法编译课程设计

    (4)情况语句中,switch后面的表达式和case后面的常量只允许出现int和char类型;每个情况子语句执行完毕后,不继续执行后面的情况子语句 (5)数组的下标从0开始 (6)for语句先执行一次循环体中的语句再进行循环...

    javascript运算符——位运算符全面介绍

    ECMAScript中的所有数值都以IEEE-754 64位格式存储,但位操作符并不直接操作64位的值,而是以32位带符号的整数进行运算的,并且返回值也是一个32位带符号的整数 这种位数转换使得在对特殊的NaN和Infinity值应用位...

    javascript文档

    &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 将两个表达式的值相乘。 *= 运算符 将变量与表达式的值相乘,结果赋给变量。 + 运算符 将两个...

    怎么用python输入计算公式-Python基础教程之输入输出和运算符.pdf

    请输⼊每⼀个多少钱 10 请输⼊购买多少⽄ 2 今天我们去⽔果超市,买了10.00块钱⼀⽄的西⽠,买了2个,⼀共花了20.00块钱 注意:input的返回值永远是⼀个字符串 print()输出函数 打印信息到标准输出设备 运算符

    与MSSQL对比学习MYSQL的心得(五)–运算符

    这个操作符和=操作符执行相同的比较操作,不过&lt;=&gt;可以用来判断NULL值。 在两个操作数均为NULL时,其返回值为1而不为NULL; 而当一个操作数为NULL时,其返回值为0而不为NULL。 下面分别是 SELECT NULL &lt;=&gt;1 ...

    C语言讲义.doc

    1.9.1 System返回值在windows和unix下的不同, 15 1.9.2 POSIX 15 1.10 C语言编译过程,GCC参数简介 16 1.10.1 C语言编译过程 16 1.10.2 -E预编译 16 1.10.3 -S汇编 16 1.10.4 -c编译 16 1.10.5 链接 16 1.11 操作系统...

Global site tag (gtag.js) - Google Analytics