泛谈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 调试器简介
Feb 21 Javascript
JavaScript严格模式禁用With语句的原因
Oct 20 Javascript
jQuery 实现侧边浮动导航菜单效果
Dec 26 Javascript
jQuery中prev()方法用法实例
Jan 08 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
Jul 05 Javascript
纯JavaScript手写图片轮播代码
Oct 20 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
Nov 06 Javascript
详解vue2.0 资源文件assets和static的区别
Nov 27 Javascript
浅谈Fetch 数据交互方式
Dec 20 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
vue-cli3跨域配置的简单方法
Sep 06 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
ThinkPHP路由详解
2015/07/27 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
python安装教程
2018/02/28 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
销售部主管岗位职责
2013/12/18 职场文书
财务专业大学生职业生涯规划范文
2013/12/30 职场文书
考试不及格的检讨书
2014/01/22 职场文书
疾病防治方案
2014/05/31 职场文书
学校清明节活动总结
2014/07/04 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
python获取字符串中的email
2022/03/31 Python