今天才知道,原来 && 和|| 的返回值是这样计算的
&&首先计算其左边的表达式,如果它的值为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>
分享到:
相关推荐
今天在做逻辑运算符的时候遇到一个小问题一直转不过弯来,var a=(undefined&&123)||(3||5)的返回值是什么? 首先是||的返回值问题: ||的返回值会返回最早遇到非以下类型的值: NaN null undefined 0 false; 所以3||...
`、逻辑运算符`&&`和`&`,以及管道符`|`和逻辑运算符`||`的用法。 首先,分号`;`用于在同一行内执行多个命令。例如,`command1 ; command2`,这两个命令会按照从左到右的顺序依次执行,无论前面的命令是否成功,...
C0文法 加法运算符> ::= +|- 乘法运算符> ::= * |/ 关系运算符> ::= ||>|>=|!=|== 字符> ::= _|a|...|z|A|...|Z ...注:返回值为void类型的子函数不允许出现在表达式中
C0文法 加法运算符> ::= +|- 乘法运算符> ::= * |/ 关系运算符> ::= ||>|>=|!=|== 字符> ::= _|a|...|z|A|...|Z ...注:返回值为void类型的子函数不允许出现在表达式中
JavaScript中的逻辑运算符`&&`和`||`通常用于布尔逻辑判断,但它们在实际编程中也有许多巧妙的用途,可以用来简化代码和控制流程。这两种运算符在jQuery和其他JavaScript库中广泛使用,以实现更高效和简洁的代码。 ...
JavaScript中的逻辑运算符`&&`和`||`通常用于逻辑判断,但在某些场景下,它们还可以作为巧妙的控制流程工具,这就是所谓的“另类用法”。这种用法可以帮助我们写出更简洁、高效的代码。 首先,我们来看`&&`运算符的...
这在使用逻辑运算符时尤为重要,因为它决定了条件表达式的返回值。 最后,值得注意的是,逻辑运算符在JavaScript中除了基本的逻辑判断之外,还常常用于执行一些基于条件的命令或选择性地执行函数。比如,我们可以用...
在Linux或Unix shell脚本中,`&&` 和 `||` 是两种常见的逻辑运算符,它们用于控制命令的执行顺序和条件。`&&` 表示"与",`||` 表示"或"。 1. **`&&` (与) 运算符**: - 当前命令执行成功(返回值为0)时,才会执行...
在JavaScript中,逻辑与运算符“&&”和逻辑或运算符“||”是常用的运算符,它们通常用于条件语句中,但由于它们的“短路”特性,在很多情况下可以通过它们来精简代码。逻辑与运算符“&&”会在其左操作数为false时...
JavaScript中的逻辑运算符&&和||用于进行布尔逻辑运算,它们在编程中非常常见。这些运算符在进行逻辑判断时,会根据条件的不同返回不同的值。具体来说,&&运算符要求两边的表达式都为真时才返回真,而||运算符只要求...
前置运算符(如`++a`)先执行操作再返回值,而后置运算符(如`a++`)先返回值再执行操作。当自增或自减运算符与其他运算符混合使用时,前后置的区别会体现出来。 接着,关系运算涉及比较两个运算对象的大小。C语言...
1.2 & 和 | 是位运算符,&& 和 || 是逻辑运算符。 1.3 C 编译器读入字符使用贪心法,从左到右一个一个读入,判断已读入的字符串是否可以组成一个符号。 1.4 整型常量第一个字符是 0,就会被视为八进制数。 1.5 单...
在Java中,有逻辑运算符`&`、`|`、`&&`和`||`。`&`和`|`是按位运算符,总是会执行两边的操作数。而`&&`和`||`是逻辑运算符,它们具有短路特性。`&&`运算符如果左侧操作数为`false`,则不会评估右侧;`||`运算符如果...
逻辑运算符 `&&` 和 `||` 具有短路特性,即如果第一个操作数足以确定结果,则不会评估第二个操作数。这在某些情况下是有益的,但在其他情况下可能会导致意外行为。 **解决方案**: 在使用逻辑运算符时考虑其短路特性...
C语言编程基础与进阶 第一章:C语言概述 C语言的历史与特点 C语言的应用领域(操作系统、嵌入式系统、游戏开发等) C语言程序的基本结构(main函数、注释、预处理...函数的返回值 标准库函数的使用(如printf, scanf,
`++`和`--`是自增和自减运算符,它们可以放在变量前或后,影响结果的返回值。例如: - `i++`先返回`i`的原始值,然后增加`i`。 - `++i`先增加`i`,然后返回新值。 2. **位运算符** 包括`&`(按位与)、`|`(按位...
* 函数的参数和返回值 * 函数的调用和应用 Knowledge Point 6: 数组 * 数组的定义和声明 * 数组的初始化和赋值 * 数组的索引和遍历 Knowledge Point 7: 指针 * 指针的定义和声明 * 指针的操作 (指针运算符 &, *,...
- 为公共类、方法和字段使用JavaDoc注释,包括描述、参数、返回值、异常和自版本以来的改变。 - JavaDoc注释通常用于自动生成代码文档。 6. 异常处理 - Java中使用try-catch-finally块来处理异常。 - 在适当的...
循环语句有`for`, `while`, 和`do-while`,`continue`用于提前结束当前循环迭代,`break`则退出整个循环,`goto`为无条件跳转,`return`语句用于函数中返回值或结束函数执行。 9. **switch语句**:提供了多分支选择...