泛谈JS逻辑判断选择器 || &&


Posted in Javascript onMay 24, 2019

前言

|| 与 &&在JS里与其它语言不一样,这是选择器运算符,而非逻辑运算符。
对于||来说,若判断为true,则返回第一个值,为false返回第二个值。
&&相反,若判断为 true,则返回第二个,为 false为返回第一个值。
绝对不是像其它语言那样返回true或false,而是会返回第一个值或第二个值。

简单的测试代码

先是true与false的测试,后将false改为数值0. 除了|| 与&&之外易让人疑惑外,JS里的假值表也算是个大疑点。

let A = true;
let B = true;
testLogic(A,B); 
A = true;
B = false;
testLogic(A,B); 
A = false;
B = true;
testLogic(A,B); 
A = false; 
B = false;
testLogic(A,B); 
/*假值表,以下值 可以被强制布尔转换为false,其它转换皆为true
undefined
null
false
+0,-0,NaN
"" 空字符串
其它皆为真值,如空对象{}
*/
console.log("-----------------next test ---------------");
A = true;
B = true;
testLogic(A,B);
A = true;
B = 0;
testLogic(A,B);
A = 0;
B = true;
testLogic(A,B);
A = 0; 
B = 0;
testLogic(A,B); 
function testLogic(A,B){
 if(A || B){
 console.log("A:",A,"B:",B,".A||B true:",A || B);
 }
 else
 {
 console.log("A:",A,"B:",B,".A||B flase:",A || B);
 }
 if(A && B){
 console.log("A:",A,"B:",B,".A&&B true:",A || B);
 }
 else
 {
 console.log("A:",A,"B:",B,".A&&B flase:",A && B);
 }
}

泛谈JS逻辑判断选择器 || &&

我写代码时我其实就只知道如何做到if 与逻辑判断实现其它语言一样的正常的效果:

结论是保证A与B的是true或false而不是其它值。

正常语言是这样的:

A B A||B A&&B
T T T T
T F T F
F T T F
F F F F

JS语言是这样的:返回的是A或B,只要保证A与B的是true或false而不是其它值,那么在使用上与正常语言逻辑一样。

A B A||B A&&B
T T A(T) B(T)
T F A(T) B(F)
F T B(T) A(F)
F F B(F) A(F)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript脚本调试方法小结
Nov 24 Javascript
javascript web页面刷新的方法收集
Jul 02 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
Dec 11 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
Jan 12 Javascript
浅析JS异步加载进度条
May 05 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
Sep 23 Javascript
微信小程序中hidden不生效原因的解决办法
Apr 26 Javascript
Angular 封装并发布组件的方法示例
Apr 19 Javascript
vue awesome swiper异步加载数据出现的bug问题
Jul 03 Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
javascript实现简易的计算器
Jan 17 Javascript
了解JavaScript中的选择器
May 24 #Javascript
Javascript通过控制类名更改样式
May 24 #Javascript
redux.js详解及基本使用
May 24 #Javascript
javascript获取元素的计算样式
May 24 #Javascript
运用js实现图层拖拽的功能
May 24 #Javascript
了解javascript中let和var及const关键字的区别
May 24 #Javascript
如何用原生js写一个弹窗消息提醒插件
May 24 #Javascript
You might like
Zerg建筑一览
2020/03/14 星际争霸
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
css配合jquery美化 select
2013/11/29 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
Element PageHeader页头的使用方法
2020/07/26 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
给学校的建议书范文
2014/05/15 职场文书
质量月活动总结
2014/08/26 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
先进典型发言材料
2014/12/30 职场文书
教学质量月活动总结
2015/05/11 职场文书
2016年主题党日活动总结
2016/04/05 职场文书