javascript “||”、“&&”的灵活运用

你是否看到过这样的代码:a=a||""; 可能javascript初学者会对此感到茫然。今天就跟大家分享一下我的一些心得。

其实:

 

Js代码 复制代码 收藏代码
  1. a=a||"defaultValue";
a=a||"defaultValue";

 

与:

 

Js代码 复制代码 收藏代码
  1. if(!a){
  2. a="defaultValue";
  3. }
	if(!a){
		a="defaultValue";
	}

 

和:

 

Js代码 复制代码 收藏代码
  1. if(a==null||a==""||a==undefined){
  2. a="defaultValue";
  3. }
	if(a==null||a==""||a==undefined){
		a="defaultValue";
	}

 

是等价的!

为了弄清这个问题,首先我们必须了解一个问题:javascript中数据类型在转换为bool类型时发生了什么。

 

在javascript中,数据类型可以分为“真值”和“假值”。顾名思义,真值转换为bool时值为true;假值转换为bool时值为false。下表罗列了一些常见的数据类型转换为bool时的值:

 

数据类型转换为bool后的值
nullFALSE
undefinedFALSE
ObjectTRUE
functionTRUE
0FALSE
1TRUE
0、1之外的数字TRUE
字符串TRUE
""(空字符串)FALSE

 

在if表达式中,javascript首先将条件表达式转换为bool类型,表达式为真值则执行if中的逻辑,否则跳过。

 

于是有了:

 

Js代码 复制代码 收藏代码
  1. if(!a){
  2. a="defaultValue";
  3. }
	if(!a){
		a="defaultValue";
	}

 

下面我们再来看“&&”、“||”两个表达式。

由于javascript是弱类型语言,所以在javascript中这两个表达式可能跟其他语言(比如java)中不太一样。

在javascript中,“&&”运算符运算法则如下:

 

如果&&左侧表达式的值为真值,则返回右侧表达式的值;否则返回左侧表达式的值。

 

这就是说:

 

Js代码 复制代码 收藏代码
  1. var i=""&&"真值";//->i=""
  2. i="真值"&&"其他真值";//->i="其他真值"
  3. i="真值"&&"";//->i=""
	var i=""&&"真值";//->i=""
	i="真值"&&"其他真值";//->i="其他真值"
	i="真值"&&"";//->i=""

 

“||”运算符的运算法则如下:

 

如果||左侧表达式的值为真值,则返回左侧表达式的值;否则返回右侧表达式的值。

 

这就是说:

 

Js代码 复制代码 收藏代码
  1. var i=""||"真值";//->i="真值"
  2. i="真值"||"其他真值";//->i="真值"
  3. i="真值"||"";//->i="真值"
	var i=""||"真值";//->i="真值"
	i="真值"||"其他真值";//->i="真值"
	i="真值"||"";//->i="真值"

 

 

于是,就可以理解:

 

Js代码 复制代码 收藏代码
  1. a=a||"defaultValue";
a=a||"defaultValue";

的逻辑了。如果a为假值(等于null、空字符串……),则将"defaultValue"赋给a;否则将a的值赋给a本身。

 

 

下面我们运用||、&&来简化程序:

 

Js代码 复制代码 收藏代码
  1. var parameter="";
  2. function test(parameter){
  3. //return 真值
  4. return true;
  5. }
  6. //真值操作
  7. function operate1(parameter){
  8. return "真值操作";
  9. }
  10. //假值操作
  11. function operate2(parameter){
  12. return "假值操作";
  13. }
  14. var result=test(parameter)&&operate1(parameter);
  15. result=test(parameter)||operate2(parameter);
  16. //等价于
  17. result=test(parameter)?operate1(parameter):operate2(parameter);
  18. alert(result);//真值操作
  19. //也等价于
  20. if(test(parameter)){
  21. result=operate1(parameter);
  22. }else{
  23. result=operate2(parameter);
  24. }
  25. alert(result)//真值操作
论文阅读--射频电源在半导体领域的应用 射频电源(RF Power Supply)是能够输出300kHz~300GHz正弦波电压的高频交流电源,在半导体制造领域,射频电源的典型工作频率范围为400kHz∼60 MHz,主要由射频发生器(功率源)、匹配器及配套控制电路组件构成,其关键组件包括变压器与电抗器、晶闸管、绝缘栅双极型晶体管(IGBT)、钣金件、铜材及各种电子元器件。射频电源是刻蚀和薄膜沉积工艺的核心,主要用于产生等离子体,以增强气体反应活性,其性能直接影响反应腔体内等离子体的浓度、均匀性和稳定性。 阅读详情

相关推荐

CANoe信号传输故障排查指南

本文提供了全面的CANoe信号传输故障排查指南,涵盖从硬件连接、通道配置到软件脚本与数据库加载的全链路诊断。针对常见的通道指示灯不亮、信号无法发送及ECU握手失败等问题,给出了基于CANoe工具和CAPL脚本的详细排查步骤与解决方案,帮助工程师系统化定位并解决实车测试中的通信故障。

ice55的博客 258

js||运算符

JS逻辑运算符 || (比如let a = b || c) JavaScript 1、JS中的||符号: 运算方法: 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。 只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。 比如:var a= b || c 这相当于一个赋值语句,如果b的值被转换为false,那么就把c的值赋给a,否在就把b的值赋给a javascript中以下值会被转换为false false unde

weixin_44195250的博客 1万+

银河麒麟arm64 V10 SP1桌面系统高效部署onnxruntime推理环境实战

本文详细介绍了在银河麒麟arm64 V10 SP1桌面系统上高效部署onnxruntime推理环境的完整实战流程。从系统环境准备、关键依赖安装,到onnxruntime的安装验证,并以YOLOv5模型部署为例进行性能对比分析,提供了在国产化飞腾D2000平台上进行AI边缘推理的实用指南和避坑技巧。

ss78901的博客 636

JS中的 || 与 && 运算符详解

1、JS中的||符号: 运算方法: 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。 只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。 总结:真前假后 2、JS中的&&符号: 运算方法: 只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值; 只要“&&am...

Joey3的博客 2万+

玄机-Linux权限维持-后门

玄机-Linux权限维持-后门

m0_46439803的博客 765

【STM32】STM32 CANFD外设的几种消息接收过滤模式

在控制器区域网络(CAN)系统中,正确配置消息过滤器对于有效管理网络通信至关重要。特别是在使用Flexible Data-rate Controller Area Network(FDCAN)时,选择合适的过滤器类型可以大大提高网络效率和消息处理速度。

林愿留的博客 6230

javascript ||与&&的用法

js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:逻辑与&&、逻辑或||和逻辑非!。 当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean),然后再进行运算,具体的运算规则如下: 1.&& 1.1两边条件都为true时,结果才为true; 1.2如果有一个为false,结果就为false; 1.3当第一个条件为false时,就不再判断后面的条件 注意:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的值;如果结果

it___is_的博客 2179

R 绘制环形树状图

按大类小类的从属关系绘制环形图,并把不同值的节点设置为相应大小。要求同一类的节点应为同一颜色。 按照输入,处理代码和输出记录

weixin_43718786的博客 1873

JS ||(或运算)详解

逻辑或运算||是布尔 OR 操作。如果两个操作数都为 true,或者其中一个为 true,就返回 true,否则就返回 false。

unber的博客 1万+

2.Vivado软件基础操作

在本章节,我们以一个简单的计数器实例,介绍FPGA开发软件Vivado的基础操作流程,计数器实例程序的设计,在本课程中先不同掌握,后续课程将针对verilog编程进行讲解。 打开Vivado软件,会看到如下的界面: 点击如下图所示的: 点击Next> 将这个地方,设置路径,注意路径必须是英文路径。且文件夹名称第一个字符不能为数字。所有路径的名称的字符数量不能超过144个符号。 点击Next> 点击Next> 点...

FPGA/MATLAB学习教程/源码/项目合作开发 4480

U盘插入电脑时发出声音但不显示——编程解决方案

以上是一些常见的编程解决方案,帮助您解决U盘插入电脑时发出声音但不显示的问题。请注意,这些解决方案可能因不同的情况而略有不同,因此请根据您的具体情况进行调整和尝试。当您将U盘插入电脑时,如果您听到了连接声音,但是U盘却没有在文件资源管理器或桌面上显示出来,这可能是由于一些常见问题导致的。U盘的文件系统格式可能与您的计算机不兼容,导致无法正确识别。如果输出显示U盘的文件系统格式与您的计算机不兼容,您可以尝试重新格式化U盘或使用其他兼容的文件系统格式。其中,X是U盘的磁盘编号,Y是您想要分配给U盘的盘符。

ByteEchoX的博客 2463

JS中的??和||符号的区别和用法

【代码】JS中的??和||符号的区别和用法。

weixin_58873157的博客 2010

TVBox源总失效?不如自己搭建一个!告别不稳定!手把手教你自建TVBox源,全网资源尽掌握!

🚀 TVBox源总失效?别慌!手把手教你自建TVBox源,打造一个稳定、海量、无广告的影视宝库!从此告别片荒,尽享丝滑观影体验!

XiaoqiangClub的博客 5462

js “||”、“&&”的灵活运用

javascript “||”、“&&”的灵活运用 如果&&左侧表达式的值为真值,则返回右侧表达式的值;否则返回左侧表达式的值。 Js代码   var i=""&&"真值";//->i=""   i="真值"&&"其他真值";//->i="其他真值"   i="真值"&&"";//->i=""     如果||左侧表达式的值为真值,则返回左侧表达式的值

海阔天空 9040

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: Jquery error 事件
下一篇: 关于如何绑定Jquery 的scroll事件(兼容浏览器)
Snoopy7713
博客等级 码龄21年 17粉丝 681原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值