首页 > 其他分享 >JS 短路运算

JS 短路运算

时间:2023-06-26 20:02:20浏览次数:38  
标签:false log 短路 JS abs && console true 运算


Boolean强制转换:除了NaN、null、""、undefined、0、function这几个为false外,其他皆为true。
短路运算的符号:    ||   &&  !  或与非。
短路运算的原理:当有多个表达式时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。

短路运算的规则
&& 找假,先看第一个表达式的值,如果第一个表达式不是布尔类型,强制转换成布尔类型,转换若后为false,则返回第一个值(不是被强制转换后的值),否则返回第二个值
||   找真,先看第一个表达式的值,如果第一个表达式不是布尔类型,强制转换成布尔类型,转换若后为true,则返回第一个值(不是被强制转换后的值),否则返回第二个值
!  非,   看表达式的值,如果表达式的值不是布尔类型,强制转换成布尔类型,若为true,则返回false,否则返回true。

短路运算的例子

<!DOCTYPE html>
<meta charset="UTF-8">
<script>
console.log("短路运算的&和|只比较第一个表达式,并由第一个表达式和运算符号决定返回哪个值");
console.log("&&测试");
console.log("&&找假");
console.log(true&&true);
console.log(true&&false);
console.log(false&&true);
console.log(false&&false);
console.log(true&&"abs");//直接显示第二个表达式的值abs
console.log(false&&"abs");//直接显示第一个表达式的值false
console.log(""&&"abs");//什么都没显示,因为第一个表达式经Boolean强制转换后是false,所以显示第一个值
console.log("abs"&&"qwe");//直接显示qwe

console.log("||测试");
console.log("||找真");
console.log(true||true);
console.log(true||false);
console.log(false||true);
console.log(false||false);
console.log(true||"abs");//直接显示true
console.log(false||"abs");//直接显示abs
console.log(""||"abs");//显示abs
console.log("abs"||"qwe");//显示abs

console.log("!测试");
console.log(!true);
console.log(!false);
console.log(!"abs");//字符串abs经boolean强制转换后是true,!true是false
console.log(!"");//字符串经boolean强制转换后是false, !false是true
</script>

 

 效果图:

JS 短路运算_字符串


 

标签:false,log,短路,JS,abs,&&,console,true,运算
From: https://blog.51cto.com/u_16171388/6557287

相关文章

  • JS 特殊数据类型的 == 和 === 比较
    在javascript的世界里,无论是函数,还是数组,还是对象,亦或是字符串,数字,布尔类型,在这些数据类型中,总有这么几个特立独行,然后造成一些可有可无的讨厌bug。而这些讨厌bug出现的原因就是由于比较时产生的错误,而且最不易查出错误。在这里我们整理了这几个特殊数据类型的比较。直接上代码。上......
  • JS for...in 遍历语句
    for...in语句用于对数组或者对象的属性进行循环操作。for(变量in对象){   在此执行代码}这里的“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。 举个例子:<!DOCTYPEhtml><metacharset="UTF-8"><script>varx;varzoon=newArray();zoon[0]="......
  • JS canvas 标签制作色相球
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>JScanvas标签制作色相球</title></head><body><canvas></canvas><scripttype="text/javascript">varcanvas,ctx,ma......
  • NodeJS系列(4)- ECMAScript 6 (ES6) 语法(二)
    在“NodeJS系列(3)-ECMAScript6(ES6)语法(一)”里,我们介绍并演示let、const、Symbol等ES6语法和概念。本文在“NodeJS系列(2)-NPM项目Import/ExportES6模块”的npmdemo 项目的基础上,继续介绍并演示函数扩展、类等ES6语法和概念。NodeJSES6:https://nodejs.org......
  • 【js学习笔记八】如何写一个简单的前端回调函数
     目录前言导语代码部分 运行结果总结前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语书写一......
  • 【js学习笔记九】前端异步请求逐步进行一回调
     目录前言导语前言运行结果解决方案运行结果前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语......
  • jsp http大文件断点续传上传
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm"action="${pageContext.request.contextPath}/UploadServlet"method="post"e......
  • elk 入门 - 分析nginx日志 + json格式 + 有调试的意识 + elk7.2.0
    1.本次采用的一台主机,将所有的软件安装一台上进行测试工作。2.安装部署:https://blog.51cto.com/hwg1227/22999953.简单调试输出rubydebuginput{file{path=>"/usr/local/log_test/*/*/*.log"start_position=>"beginning"}}output{e......
  • NodeJS本地环境安装及设置
    背景作为一个后端,服务接口自然不在话下。分分钟给安装上百个接口。但是交互。。。postman,postman,,,,,可视化和交互上那简直真的就是都长这样:想搞个React前端页面。先使用一下单表的增删改查操作。用来操作数据库玩玩一、概念1、Node.js是什么?Node.js是一个开源和跨......
  • Three.js教程:gui.js库(可视化改变三维场景)
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生gui.js库(可视化改变三维场景)gui.js库(可视化改变三维场景)dat.gui.js说白了就是一个前端js库,对HTML、CSS和JavaScript进行了封装,学习开发的时候,借助dat.gui.js可以快速创建控制三维场景的UI交互界面,你打开......