JS短路原理的应用示例

 正如标题所言,js中||和&&的特性帮我们精简了代码的同时,也带来了代码可读性的降低。这就需要我们自己来权衡了,下面有个不错的示例

在js逻辑运算中,0、""、null、false、undefined、NaN都会判为false,其他都为true. 
 
||先计算第一个运算数,如果可以被转换成true,则返回左边这个表达式的值,否则计算第二个运算数。即使||运算符的运算数不是布尔值,任然可以将它看作布尔OR运算,因为无论它返回的值是什么类型,都可以被转换为布尔值。 
利用它对非布尔型的值会将其返回的特性:对非布尔型的运算数使用||,用于选取一组备选值中的第一个定义了的并且非空的值(第一个为非false的值) 
 
例: 
var max = max_width || obj.max_width || 500 ; 
var attr = attr || "";这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,在给函数的参数定义一个默认值的时比较有用。 
 
&&,它先计算第一个表达式,若为假,就不会去处理第二个表达;否则继续处理后继表达式。从左到右选取表达式的第一个为非true的表达式的值,如果一直未找到则返回最后一个表达式的值。 
 
例:(其中的味道还需要细心琢磨) 
 
2 && 's1' && '123' && 'sss' 表达式的值等于 'sss' 
2 && 's1' && '' && 'sss' 表达式的值等于 '' 
2 && 's1' && NaN && 'sss'表达式的值等于 NaN 
 
if(a >=5){ 
alert("你好"); 

可以简成: 
a >= 5 && alert("你好"); 
 
typeof 5和typeof !!5的区别,这是一种更严谨的写法,!!的作用是把一个其他类型的变量转成的bool类型。例如, if(!!attr) => if(attr) 
 
js中||和&&的特性帮我们精简了代码的同时,也带来了代码可读性的降低。这就需要我们自己来权衡了。 
 
JS中的startWith功能的巧妙实现,alert(!'asdf'.indexOf('s')) =》 !0 = true
 

时间: 2024-09-20 00:19:03

JS短路原理的应用示例的相关文章

JS短路原理的应用示例 精简代码的途径_javascript技巧

在js逻辑运算中,0."".null.false.undefined.NaN都会判为false,其他都为true. ||先计算第一个运算数,如果可以被转换成true,则返回左边这个表达式的值,否则计算第二个运算数.即使||运算符的运算数不是布尔值,任然可以将它看作布尔OR运算,因为无论它返回的值是什么类型,都可以被转换为布尔值. 利用它对非布尔型的值会将其返回的特性:对非布尔型的运算数使用||,用于选取一组备选值中的第一个定义了的并且非空的值(第一个为非false的值) 例: var

js获取当前地址 JS获取当前URL的示例代码

 本篇文章主要是对js获取当前地址 JS获取当前URL的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: <table width=100% cellpadding=0 cellspacing=0 border=0 >  <script language="javascript"> thisURL = document.URL;  thisHREF = document.location.href;  thisSLoc = self

JS调用打印机功能简单示例_javascript技巧

本文实例讲述了JS调用打印机功能的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head&g

Android中js和原生交互的示例代码

本文介绍了Android中js和原生交互的示例代码,分享给大家,具体如下: 加载webview的类 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); JavaScriptInterf

HTML5 手势检测原理和实现示例

常用的 HTML5 手势可以分为两类,单点手势和两点手势.单点手势有 tap(单击),double tap(双击),long tap(长按),swipe(挥),move(移动).两点手势有 pinch(缩放),rotate(旋转). 接下来我们实现一个检测这些手势的 js 库,并利用这个手势库做出炫酷的交互效果. 移动 关于移动手势检测我们在这篇博文中做过详细介绍,这里不再赘述.总结一下就是在每次touchmove事件发生时,把两个位移点之间的坐标位置相减,就可以了. 单击(tap) 手势检测的

prototype.js是什么?(prototype教程示例)

js|教程|示例|prototype prototype.js是什么?万一你没有使用过大名鼎鼎的prototype.js,那么让我来告诉你,prototype.js是由Sam Stephenson写的一个javascript类库.这个构思奇妙,而且兼容标准的类库,能帮助你轻松建立有高度互动的web2.0特性的富客户端页面. 如果你最近尝试使用它,你大概了解到文档并不是作者的一个强项.和在我以前使用这个类库的不少开发者一样,一开始,我不得不一头扎进阅读prototype.js的源代码和实验它的功能

ASP小偷程序原理和简单示例

程序|示例|小偷程序     (一)原理 小偷程序实际上是通过了XML中的XMLHTTP组件调用其它网站上的网页.比如新闻小偷程序,很多都是调用了sina的新闻网页,并且对其中的html进行了一些替换,同时对广告也进行了过滤.用小偷程序的优点有:无须维护网站,因为小偷程序中的数据来自其他网站,它将随着该网站的更新而更新:可以节省服务器资源,一般小偷程序就几个文件,所有网页内容都是来自其他网站.缺点有:不稳定,如果目标网站出错,程序也会出错,而且,如果目标网站进行升级维护,那么小偷程序也要进行相应

ASP中实现小偷程序的原理和简单示例

程序|示例|小偷程序 现在网上流行的小偷程序比较多,有新闻类小偷,音乐小偷,下载小偷,那么它们是如何做的呢,下面我来做个简单介绍,希望对各位站长有所帮助. (一)原理 小偷程序实际上是通过了XML中的XMLHTTP组件调用其它网站上的网页.比如新闻小偷程序,很多都是调用了sina的新闻网页,并且对其中的html进行了一些替换,同时对广告也进行了过滤.用小偷程序的优点有:无须维护网站,因为小偷程序中的数据来自其他网站,它将随着该网站的更新而更新:可以节省服务器资源,一般小偷程序就几个文件,所有网页

JS中字符串trim()使用示例

  本文主要给大家介绍的是javascript中的扩展方法字符串trim()的使用指南,十分的简单实用,有需要的小伙伴可以参考下. 示例一: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <head> <title>测试JS扩展方法</title> <script type="text/javascript"> // 合并多个空白为一个空白 String.prototype.ResetBla