浅谈javascript中的 “ && ” 和 “ || ”

发布时间 - 2026-01-10 22:49:13    点击率:

有时候,我们会在jQuery框架或者其他js插件中发现里面有很多 “ && ” 和 “ || ”,那么这两个标识到底是什么含义?怎么使用?我觉得还是有必要稍微深究一下。

一、原理:

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

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

在js逻辑运算中,我们知道 0、""、null、false、undefined、NaN 这五种数据类型是会被判断为false的。那么,我们在进行js的逻辑运算过程中,就可以根据上面的原理以及这五种数据类型来进行相应的判断处理。直接上DEMO...

二、原始DEMO:

先亮出问题!!!

如果我们要根据学生的成绩来判断等级,比如:90分表示A,80分表示B,60分表示C,其他表示D。

那么我们可以这么做:

JS代码:

var score = 90;
var grade = '';
if(score === 90){
 grade = "A";
}else if(score === 80){
 grade = "B";
}else if(score === 60){
 grade = "C";
}else{
 grade = "D";
}
console.log("当前学生等级为:" + grade); // 当前学生等级为:A

或者这样:

var score = 90;
var grade = '';
switch(score){
 case 90:
 grade = "A";
 break;
 case 80:
 grade = "B";
 break;
 case 60:
 grade = "C";
 break;
 default:
 grade = "D";
 break;
};
console.log("当前学生等级为:" + grade); // 当前学生等级为:A

三、优化DEMO:

其实,如果我们用 “ && ” 和 “ || ” 的话,大可不必如上面那么麻烦。

var score = 90;
var grade = (score===90 && 'A') || (score===80 && 'B') || (score===60 && 'C') || 'D';
console.log("当前学生等级为:" + grade); // 当前学生等级为:A

上面代码可以这么理解:

如果score的值等于90,那么score===90的逻辑表达式就成立(也即是true),就会执行到后面 'A' 的赋值操作,同时后面的“||” 逻辑运算也可以忽略(因为“||”运算符的特点是前面一旦为true,后面就没有执行的必要了)。

如果score的值不等于90,那么score===90的逻辑表达式就不成立(也即是false),根据“&&”操作符的特点,我们知道“(score===90 && 'A')”这段代码就不会执行到后面 'A' 的赋值操作,同时由于“(score===90 && 'A')”这段代码整体是false,那么根据“||”的特点,整个逻辑表达式会继续往后执行。

以此类推,如果前面所有的逻辑表达式都不成立,那么根据“||”的特点(全部为false就取最后面的),最后的grade赋值就会是“D”。

我们还可以用JSON形式来处理上面的逻辑运算:

var score = 90;
var grade = {90:"A", 80:"B", 60:"C"}[score] || 'D';
console.log("当前学生等级为:" + grade); // 当前学生等级为:A

这里利用了JSON对象的属性读取,当“JSON对象.属性值”存在的时候(为true),就会取得对应属性的key值(A、B或者C)。当score属性值不存在与JSON对象中的时候,就会执行“||”后面的内容,也就是把grade赋值为“D”。

当然,我们会发现上面的数值比较并没有太大的实用性,比如当学生的成绩在85分的时候,等级也会变成“D”,这明显是不合适的!!!

所以我们可以把上面的代码再优化下,把数值的 “相等比较” 改成 “范围区间比较” 。

var score = 85;
var grade = (score>=90 && 'A') || (score>=80 && 'B') || (score>=60 && 'C') || 'D';
console.log("当前学生等级为:" + grade); // 当前学生等级为:B

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# javascript  # &&  # ||  # Javascript中数组去重与拍平的方法示例  # 理解javascript中的Function.prototype.bind的方法  # JavaScript数组复制详解  # Javascript基础回顾之(三) js面向对象  # Javascript基础回顾之(一) 类型  # JavaScript基础之AJAX简单的小demo  # JavaScript Date 知识浅析  # JavaScript实现时钟滴答声效果  # Javascript中 带名 匿名 箭头函数的重要区别(推荐)  # javascript判断回文数详解及实现代码  # Javascript中的 “&” 和 “|” 详解  # 都是  # 就会  # 这段  # 我们可以  # 即是  # 都不  # 也会  # 这五种  # 我觉得  # 有很多  # 就不  # 可以用  # 会在  # 以此类推  # 这两个  # 太大  # 不存在  # 大可不必  # 有必要  # 这么做 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  如何在 React 中条件性地遍历数组并渲染元素  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Laravel Docker环境搭建教程_Laravel Sail使用指南  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  智能起名网站制作软件有哪些,制作logo的软件?  Laravel安装步骤详细教程_Laravel环境搭建指南  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  微信h5制作网站有哪些,免费微信H5页面制作工具?  利用vue写todolist单页应用  Mybatis 中的insertOrUpdate操作  如何快速搭建高效简练网站?  利用python获取某年中每个月的第一天和最后一天  深圳网站制作的公司有哪些,dido官方网站?  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  EditPlus中的正则表达式 实战(2)  详解Android图表 MPAndroidChart折线图  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel如何使用模型观察者?(Observer代码示例)  如何破解联通资金短缺导致的基站建设难题?  ,怎么在广州志愿者网站注册?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  网站页面设计需要考虑到这些问题  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  如何在新浪SAE免费搭建个人博客?  Laravel如何实现API版本控制_Laravel版本化API设计方案  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何用虚拟主机快速搭建网站?详细步骤解析  如何在云服务器上快速搭建个人网站?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  如何用花生壳三步快速搭建专属网站?  Laravel如何实现一对一模型关联?(Eloquent示例)  什么是javascript作用域_全局和局部作用域有什么区别?  怎样使用JSON进行数据交换_它有什么限制  如何将凡科建站内容保存为本地文件?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  如何快速搭建高效可靠的建站解决方案?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】