泛谈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 相关文章推荐
高亮显示web页表格行的javascript代码
Nov 19 Javascript
解析prototype,JQuery中跳出each循环的方法
Dec 12 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
Sep 17 Javascript
AngularJS 中的指令实践开发指南(一)
Mar 20 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
Jul 20 Javascript
原生javascript AJAX 三级联动的实现代码
May 04 Javascript
微信小程序实现文字从右向左无限滚动
Nov 18 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
Sep 10 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
Oct 10 jQuery
原生JavaScript实现滑动拖动验证的示例代码
Dec 06 Javascript
js实现列表按字母排序
Aug 11 Javascript
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
了解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
MySQL相关说明
2007/01/15 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
CCPry JS类库 代码
2009/10/30 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
jQuery动态添加
2016/04/07 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
Vue.js用法详解
2017/11/13 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
python简单实现最大似然估计&scipy库的使用详解
2020/04/15 Python
PyQt5实现简单的计算器
2020/05/30 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
2020/06/06 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
详解HTML5中ol标签的用法
2015/09/08 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
Java如何获得ResultSet的总行数
2016/09/03 面试题
劳动实践课感言
2014/02/01 职场文书
赔偿协议书范本
2014/04/15 职场文书
测绘工程专业求职信
2014/07/15 职场文书
个人租房协议书
2014/11/28 职场文书
撤诉书怎么写
2015/05/19 职场文书
python三子棋游戏
2022/05/04 Python