JavaScript的“&&”和“||”操作符总结

虚树季风
• 阅读 2913

&&和||操作符链接的两个值最后取哪个值的问题,有点模糊和不好理解,比如下面的表达式输出什么?如果你能答对说明你对这个问题就掌握了没什么问题。

var val1 = 123 && 234; 
var val2 = 0 && 1; 
var val3 = 1 && 0; 
var val4 = 1 && ""; 
var val5 = "" && 1; 
var val6 = "" && 0; 
var val7 = 0 && "";

&&和||操作符两边不是布尔类型时,系统会转换成布尔类型值再计算(空字符串、null、0都会被转成false),结果本身不变。上述表达式的结果为:

var val1 = 123 && 234;    //234
var val2 = 0 && 1;    //0
var val3 = 1 && 0;    //0
var val4 = 1 && "";    //""
var val5 = "" && 1;    //""
var val6 = "" && 0;    //""
var val7 = 0 && "";    //0

你都答对了吗?

&&操作符总结:只要一个false就取false的值,都是true取后面,都是false取前面。

助记:一F即F取F,都F取前。

||操作符跟&&操作符相反,那么如下表示式 的结果是什么?

var val1 = 1 || 2;    //1
var val2 = 0 || 1;    //1
var val3 = 1 || 0;    //1
var val4 = 1 || "";    //1
var val5 = 0 || "";    //""
var val6 = "" || 0;    //0
var val7 = 0 || "";    //""

||操作符总结:只要一个是true就取true的值,都是true取前面,都是false取后面。

这个两个操作符需要注意的是,只有一边是false和true的情况,和都是false或true的情况。

这个连个操作符在DOM编程中经常使用,比如:

var obj  =  document.body.scrollTop  ||  document.documentElement.scrollTop;

只需要记住其中一个操作符的特点即可。

点赞
收藏
评论区
推荐文章
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
阿邹 阿邹
4年前
java传值和传引用问题
这个问题还是很常见的,如果你平常敲代码比较多你可能经常会遇到这个问题。如果你知道java这个机制,你可能还会一直在找代码的问题。java中的值传递和引用传递。比如下面有这俩个方法javaprivatevoidupdataValue(Strings){s"123";}privatevoidupd
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
3年前
JavaScript原型深入浅出
不学会怎么处理对象,你在JavaScript道路就就走不了多远。它们几乎是JavaScript编程语言每个方面的基础。事实上,学习如何创建对象可能是你刚开始学习的第一件事。对象是键/值对。创建对象的最常用方法是使用花括号{},并使用点表示法向对象添加属性和方法。letanimal{}animal.name
Stella981 Stella981
3年前
ClickHouse在字节跳动广告DMP&CDP的应用
展开function\_typeof(e){returne&&"undefined"!typeofSymbol&&e.constructorSymbol?"symbol":typeofe;}!function(e){if("object"("undefined"typeofmodule?
Stella981 Stella981
3年前
ASMSupport教程4.8 生成逻辑运算操作
<p在java中有以下逻辑运算符:</p<ul<li&amp;&amp;:条件与</li<li||:条件或</li<li&amp;:布尔型的逻辑与</li<li|:布尔型的逻辑或</li<li^:布尔型的逻辑异或</li<li!:非操作</li</ul<p那么接下来我们将些段例子
Stella981 Stella981
3年前
Flutter中动态显示组件之“坑”,我来教你怎样爬上来
展开function\_typeof(e){returne&amp;&amp;"undefined"!typeofSymbol&amp;&amp;e.constructorSymbol?"symbol":typeofe;}!function(e){if("object"("undefined"typeofmodule?
Stella981 Stella981
3年前
Python怎样查询MySQL数据库?
ShowMorefunction\_typeof(e){returne&amp;&amp;"undefined"!typeofSymbol&amp;&amp;e.constructorSymbol?"symbol":typeofe;}!function(e){if("object"("undefined"typeof
Stella981 Stella981
3年前
SeleniumConf
展开function\_typeof(e){returne&amp;&amp;"undefined"!typeofSymbol&amp;&amp;e.constructorSymbol?"symbol":typeofe;}!function(e){if("object"("undefined"typeofmodule?
Stella981 Stella981
3年前
Python竟然能画这么漂亮的折线图运营妹子看到直接哭了
ShowMorefunction\_typeof(e){returne&amp;&amp;"undefined"!typeofSymbol&amp;&amp;e.constructorSymbol?"symbol":typeofe;}!function(e){if("object"("undefined"typeof
Wesley13 Wesley13
3年前
JAVA 基础部分易混淆问题总结
前言   最近在看了一些java基础问题,顺便将这段时间看到的容易混淆和已忘记的问题进行整理总结一下.接下来会再写一些web方便易混淆或者不常用易忘记的问题梳理问题列表    1、和equals区别        操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要