JavaScript逻辑运算符“”和“||”短路原则的应用
文章出自个人博客https://knightyun.github.io/2018/06/01/js-logic-compute,转载请申明
逻辑运算符
在Javascript中,有逻辑运算符 与 &&
, 或 ||
, 非 !
,常在条件句或循环中进行逻辑判断。
例如:
var a = 1, b = 1, c = 2;
if (a = b && (b = c || a != c))
{alert("true");
} else
{alert("false");
}
括号中表达式值为真,最后提示“true”。
短路原则
在逻辑运算中,这是一个通用的原则,这是由于表达式从左到右执行的特性,为了减少运算量而给运算器规定的操作。主要针对 &&
和 ||
两种运算。
&&
的判断是同真为真,一假为假,则运算如果左边的表达式值为false
,那么就不会再执行右边的表达式了,如果左表达式为true
,就会继续执行右表达式;||
的判断是一真为真,同假为假,则运算如果坐表达式值为true
,那么就不用执行右边的表达式了,如果左表达式为false
,就会继续执行右表达式;
举例说明:
(1 == 1) && alert("msg1");
(1 != 1) && alert("msg2");
(1 == 1) || alert("msg3");
(1 != 1) || alert("msg4");
结果是提示“msg1”和“msg4”。原理如上述。
因此,如果有以下表达式:
var a = 9;
if (a > 0)
{alert("true");
} else
{alert("false");
}
也许你会使用三目运算简化成这样:
var a = 9;
(a > 0) ? alert("true") : alert("false");
其实也可以这样写:
var a = 9;
(a > 0) && alert("true");
(a > 0) || alert("false");
Javascript中的应用
在javascript中,只有对象(Object)
和布尔值true
为真,其它例如 undefined
, NaN
, false
等,值为 false
。为被定义的对象或未赋值变量也是 false
,因为其值都是 undefined
,这里就可以应用于检查某变量是否已定义。
举例说明:
var a = 1;
var o = new Object();
var b;
a && alert("defined"); //已定义a,提示“defined”
o && alert("defined"); //已定义对象o,提示“defined”
Object && alert("defined"); //Object是一个已知的全局对象,提示“defined”
b || alert("not defined"); //b未赋值,提示“not defined”
p || alert("not defined"); //未定义p,提示“not defined”
除了这个也能衍生出其它相同原理的应用,类似于判断赋值 var a = (b > 0) && '9'
或判断定义变量 var abc = abc || ""
等。
js中使用这种方法可以减少代码量,提示性能,但同时也降低了代码可读性,比如个人觉得还是看以下代码比较舒适:
var a = 1;
if (a > 1)
{alert("true");
}
方法的选择就要视情况而权衡了。
技术文章推送 手机、电脑实用软件分享
JavaScript逻辑运算符“”和“||”短路原则的应用相关推荐
- Java位逻辑运算符优先级和短路原则
一.短路原则 1.逻辑或短路:只要一个为真,或结果就为真,后面的不算了. 2.逻辑与短路:只要有一个为假,结果就为假.如果&&左边的算式结果为假,那么右边的不再运行,直接得出结果为假. ...
- python短路原则
'# #python短路原则' python中 and 和 or 运算的核心思想 --- 短路逻辑 包含一个逻辑运算符 首先从基本的概念着手,python中哪些对象会被当成 False 呢?而哪些又是 ...
- java短路运算符有哪些_Java逻辑运算符的短路功能
逻辑运算包括:与.或.非.异或.共6种运算符.true 表示真.false 表示假. 一.逻辑运算符 下表列出了逻辑运算符: 操作符 描述 &&,& 逻辑与运算符.当且仅当两个 ...
- JavaScript逻辑运算符的使用技巧
前言 !, &&, || 三个运算符是JavaScript中重要的逻辑运算符,本文将介绍这三个运算符在JavaScript实际编程中的有趣使用技巧. 取反运算符(!) 如果对一个值连续 ...
- 探寻 JavaScript 逻辑运算符(与、或)的真谛
十二月已经过半,冬季是一个美妙的季节,寒冷的空气逼得人们不得不躲在安逸舒适的环境里生活.冬季会给人一种安静祥和的氛围,让人沉浸在其中,仿佛是一个旧的阶段的结束,同时也是一个新的阶段的开始.这么说来,西 ...
- javascript规范以及设计原则
UI layer的分离 针对CSS: 尽量不要在JS中的添加过多的动态CSS,可以考虑使用addClass 针对JS中的事件: Keep JavaScript Out of HTML 避免以下的代码 ...
- 【推荐阅读】JavaScript 中的 SOLID 原则(一):“S”代表什么
你可能已经了解过一些设计原则或者设计模式,本文主要渐进的讲解了SOLID原则: 不使用SOLID是怎么编写代码的,存在什么问题? 应该使用SOLID中的哪个原则? 使用SOLID我们应该如何对代码进行 ...
- JavaScript 设计模式的七大原则(未完成)
设计模式(面向对象)有七大设计原则,分别是: 开闭原则:对扩展开放,对修改关闭 单一职责原则:每一个类应该专注于做一件事情 里氏替换原则:父类存在的地方,子类是可以替换的 依赖倒转原则:实现尽量依赖抽 ...
- web前端开发学什么,JavaScript逻辑运算符与赋值运算符
问题: 从浏览器地址栏输入url到请求返回发生了什么 你一看这种烂掉牙的问题,小case,但996面试大佬由此延展的问题已经远远超越了这个问题本身了,不信你就接着看. 我回答了首先会进行 url 解析 ...
最新文章
- Nacos 2.0的Spring Boot Starter来了!
- 超硬核!躺进BAT以后我总结了出现最多的15道数组题
- Spring mvc中@RequestMapping 6个基本用法小结
- 1024程序员节持续引爆星城:500万程序员线上线下互动,共迎开源软件、操作系统新时代...
- 提高计算机技能操作水平,计算机操作技能比赛方案
- 提升网页加载速度—预加载VS预读取
- pythoncv2模块详细介绍_【Opencv】【Python】Python中opencv模块cv2一些函数用法及简介...
- 客户端js服务端互相调用
- 7. memcache 细节
- 初学django框架
- Abaqus安装在lincense server1出错
- 基于imx6ul下调试tlv320aic3x声卡
- sqlserver 企业版下载地址
- 柴静,你能看见自己吗?
- Excel如何将文本中间的数值提取出来
- jy-09-SERVLETJSP——Servlet-Cookie-Session
- Ubuntu下mingw和aarch64交叉编译x264/x265/openssl/freetype2的ffmpeg
- 1.2.2 网络抓包工具之:Fiddler
- 计算机网络——配置动态路由实验
- 工业互联网平台IMSA---1.3.启动过程详解2
热门文章
- absolute和relative元素 设置百分比宽高的差异
- eclipse下添加viplugin插件的方法
- asp.net 中RadioButtonList的选项改变事件处理(采用jquery操作)
- 绑定gridview去掉标题文字粗体。
- 程序员的算法课(17)-常用的图算法:深度优先(DFS)
- 【短文本相似度】传统方法BM25解决短文本相似度问题
- shell进入特权模式_shell的各种运行模式?
- Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题...
- Struts1——离BeanUtils看struts其原理1
- 关闭 IOS8 最近使用 最近联系人