javaScript 中的布尔运算符 && 和 ||

布尔运算符 && 和 ||的返回结果不一定是布尔值!由此来展开一定的研究及理解。

1.首先先介绍下常见的数据类型转化为bool后的值。

(常用地方)在if表达式中,javascript先把条件表达式转换成bool值再进行判断

2.下面来介绍下逻辑与&& 逻辑非|| 的运算后的返回结果

逻辑与 &&

由上面结果可以看出。逻辑与&&中,当左侧表达式为 真值,结果则返回右侧表达式;当左侧表达式为 假值,结果则返回左侧表达式;

也就是

var i="真值" && "任意值" ;=> i结果为任意值

var i="假值" &&  "任意值"; => i 结果为左侧假值  //假值包括 null false 0 undefined 空字符串

逻辑或 ||

由上面结果可以看出。逻辑或||中,当左侧表达式为 真值,结果则返回左侧表达式;当左侧表达式为 假值,结果则返回右侧表达式;

var i="真值" || "任意值" ;=> i结果为’真值’ //真值包括 object  function 0之外的数字 字符串

var i="假值" ||  "任意值"; => i 结果为‘任意值’  

3.逻辑与&&和逻辑或||都属于短路操作。

什么叫做短路操作呢,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。

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

在上面代码中,当执行逻辑与操作时会发生错误,因为变量someUndefineVariable没有声明,由于found为true,所以逻辑与会对变量someUndefineVariable求值,由于someUndefineVariable没定义,所以会报错,如果found为false的话,则不会对someUndefineVariable进行求值,就有输出结果。  (ps不能再逻辑与中使用未定义的值)。逻辑非||也与逻辑与&&类似,当左侧表达式为 真值时,则不对右侧表达式进行求值。

时间: 2024-10-11 16:12:43

javaScript 中的布尔运算符 && 和 ||的相关文章

JavaScript中的逗号运算符

JavaScript中的逗号运算符(,)是顺序执行两个表达式. expression1, expression2 其中,expression1是任何表达式,expression2是任何表达式. 逗号运算符(,)导致按从

JS 中的布尔运算符 && 和 ||

布尔运算符 && 和 ||的返回结果不一定是布尔值!由此来展开一定的研究及理解. 1.首先先介绍下常见的数据类型转化为bool后的值. (常用地方)在if表达式中,javascript先把条件表达式转换成bool值再进行判断 2.下面来介绍下逻辑与&& 逻辑非|| 的运算后的返回结果 逻辑与 && var i="真值" && "任意值" ;=> i结果为任意值 var i="假值&quo

关于C# 中的布尔运算符 "&" "|” 与 其类似的条件布尔运算符 "&&" "||" 区别说明。

运算符使用说明如下:  分隔符 ---------------------------- 分隔符 ---------------------------- 上述两个运算符的结果与&和 | 完全相同,但得到结果的方式有一个重要区别:其性能比较好.两者都是检查第一个操作数的值(表2中的var2),再根据该操作数的值进行操作,可能根本就不处理 第二个操作数(表42中的var3). 如果&&运算符的第一个操作数是 false,就不需要考虑第二个操作数的值了,因为无论第二个操作数的值是什么,

JavaScript中使用typeof运算符需要注意的几个坑

typeof是一个运算符,它对操作数返回的结果是一个字符串,有6种(只针对ES,不包含HOST环境对象). 1.'undefined'2.'boolean'3.'string'4.'number'5.'object'6.'function' 因为它本身是运算符,它不是函数,使用时没必要加个小括号. typeof用来判断类型,它有几个坑 1. 对null返回是'object',你却不能真正当对象使用. 代码如下: var obj = nullif (typeof obj === 'object')

你真得懂Javascript中的==等于运算符吗?

var i = 2; Number.prototype.valueOf = function() { return i++; }; var a = new Number( 42 ); if (a == 2 && a == 3) { console.log( "Yep, this happened." ); } ============================ "0" == null; // false "0" == und

javascript中关系运算符的说明

决定javascript语法的部分叫做ECMAScript,JavaScript的语法相比较java来说宽松了很多,同时也复杂了很多.在ECMAscript中进行关系符运算时,经常会遇到各种类型转换,大部分的类型转换都是自发的,在应用不同的操作符进行转换时,数据类型的转换又会有所不同. javascript中的关系运算符包括'>','<','>=','<='. 当两个做比较的操作数都是数字的时候,直接进行比较(当然了,这是废话). 当两个操作数都是字符串的时候,比较字符串对应的字符

JavaScript中的类型转换(二)

说明: 本篇主要讨论JavaScript中各运算符对运算数进行的类型转换的影响,本文中所提到的对象类型仅指JavaScript预定义的类型和程序员自己实现的对象,不包括宿主环境定义的特殊对象(比如浏览器定义的对象) 上一篇中讨论了JavaScript中原始类型到原始类型的转换,原始类型到对象类型的转换和对象类型到原始类型的转换,这里先提出一个问题 var a = undefined; if(a){ console.log('hello'); }else{ console.log('world')

Python之布尔运算符

python中的布尔运算符有三种,or,and,not. 布尔运算,根据升序优先进行排序.运算 | 结果 | 提示=============================x or y | x假时,执行y |  1-----------------------------x and y | x真时,执行y | 2------------------------------not x | x为假时,返回True | 3笔记: 1.这是一个短路运算符,因此只有当第一个参数为false时,它才会计算第

JavaScript一元运算符、二元运算符和三元运算符

在JavaScript中,运算符可以根据其实际操作数的个数进行分类. JavaScript中的大多数运算符是一个二元运算符(binary operator),将两个表达式合并称为一个稍复杂的表达式.譬如a*b中的乘法运算符*,就是一个二元运算符.表达式-x中的-运算符就是一个一元运算符,是将操作数x求负值.最后,JavaScript支持一个三元运算符(ternary operator),条件判断运算符?:,它将三个表达式合并成一个表达式. 条件语句?(条件为真)执行语句A:(条件为假)执行语句B