浅谈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 】
相关推荐:
如何为不同团队 ID 动态生成多个独立按钮
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Linux网络带宽限制_tc配置实践解析【教程】
如何在景安云服务器上绑定域名并配置虚拟主机?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
如何在阿里云购买域名并搭建网站?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何用5美元大硬盘VPS安全高效搭建个人网站?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
在Oracle关闭情况下如何修改spfile的参数
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Android GridView 滑动条设置一直显示状态(推荐)
Laravel怎么连接多个数据库_Laravel多数据库连接配置
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
如何在阿里云部署织梦网站?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Laravel如何使用Vite进行前端资源打包?(配置示例)
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
Laravel API资源类怎么用_Laravel API Resource数据转换
Python高阶函数应用_函数作为参数说明【指导】
详解Huffman编码算法之Java实现
javascript中对象的定义、使用以及对象和原型链操作小结
零基础网站服务器架设实战:轻量应用与域名解析配置指南
非常酷的网站设计制作软件,酷培ai教育官方网站?
Laravel如何使用Eloquent进行子查询
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
C语言设计一个闪闪的圣诞树
Android实现代码画虚线边框背景效果
大连 网站制作,大连天途有线官网?
如何快速打造个性化非模板自助建站?
Android滚轮选择时间控件使用详解
Windows Hello人脸识别突然无法使用
如何在橙子建站上传落地页?操作指南详解
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
Laravel中的Facade(门面)到底是什么原理
如何快速登录WAP自助建站平台?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
JavaScript Ajax实现异步通信
Laravel如何使用Gate和Policy进行授权?(权限控制)
高防服务器:AI智能防御DDoS攻击与数据安全保障

