Javascript的&&和||的另类用法
最近也没什么心思写文章了,感觉总有忙不完的事情,呵。 不过这些天又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的 CodeStrong 就是一套非常不错的学习代码,只要看通了其整套代码,相信对Alloy的使用也基本会了~
在看其源码的同时,发现很多地方使用了诸如以下的用法:
$.clouds && ($.index.add($.clouds));
开始不是很理解,毕竟平时这样用的也少,上了下google后才知道原来这样写法非常方便好用(其实jquery的源码里也大量使用此方法)。以下引用一段网上找到的解释&&和||在javascript中的另类用法:
a() && b() :如果执行a()后返回true,则执行b()并返回b的值;如果执行a()后返回false,则整个表达式返回a()的值,b()不执行;
a() || b() :如果执行a()后返回true,则整个表达式返回a()的值,b()不执行;如果执行a()后返回false,则执行b()并返回b()的值;
&& 优先级高于 ||
看完后就相当清楚了,再看看具体代码:
alert((1 && 3 || 0) && 4); //结果4 ① alert(1 && 3 || 0 && 4); //结果3 ② alert(0 && 3 || 1 && 4); //结果4 ③
分析:
语句①:1&&3 返回3 => 3 || 0 返回 3 => 3&&4 返回 4
语句②:先执行1&&3 返回3,在执行0&&4返回0,最后执行结果比较 3||0 返回 3
语句③:先执行0&&3 返回0,在执行1&&4返回4,最后执行结果比较 0||4 返回 4
注:非0的整数都为true,undefined、null和空字符串”” 为false。
感觉javascript确实挺强挺灵活的哦,呵呵~~
相关推荐
-
javascript中关于&& 和 || 表达式的小技巧分享
如果你还是新手, 而且读完所有这些技巧的详解和每种技巧是如果工作的以后运用它们, 你会写出更加简练高效的JavaScript程序. 确实, JavaScript高手已经运用这些技巧写出了很多强大, 高效的JavaScript程序. 但是你可以这样. 强大的 && 和 || 表达式 你可能在JavaScript库和JavaScript框架中已经见过它们了, 那么我们先由几个基本的例子开始: 例子1. || (或) 设置默认值, 通常用 复制代码 代码如下: function document
-
解释&&和||在javascript中的另类用法
又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的 CodeStrong 就是一套非常不错的学习代码,只要看通了其整套代码,相信对Alloy的使用也基本会了- 在看其源码的同时,发现很多地方使用了诸如以下的用法: $.clouds && ($.index.add($.clouds)); 开始不是很理解,毕竟平时这样用的也少,上了下google后才知道原来这样写法非常方便好
-
JavaScript中的逻辑判断符&&、||与!介绍
与C.Java等语言一样,JavaScript中可以用&&.||.!三个逻辑判断符来对boolean值进行逻辑判断.与C.Java不同的是,JavaScript中逻辑与(&&)和逻辑或(||)操作符可以应用在任何值上,而操作结束后返回的也不一定是boolean值. 逻辑与&&的处理规则 JavaScript中&&的处理规则是这样的: 1.判断第一个值是否为Falsy.如果为Falsy,则直接返回第一个值(不一定为boolean类型). 2.如
-
Javascript的&&和||的另类用法
最近也没什么心思写文章了,感觉总有忙不完的事情,呵. 不过这些天又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直没去详细研究,后来发现原来官方的 CodeStrong 就是一套非常不错的学习代码,只要看通了其整套代码,相信对Alloy的使用也基本会了- 在看其源码的同时,发现很多地方使用了诸如以下的用法: $.clouds && ($.index.add($.clouds)); 开始不是很理解,毕竟平
-
javascript面向对象之this关键词用法分析
本文实例分析了javascript面向对象之this关键词用法.分享给大家供大家参考.具体分析如下: 当需要初始化某个属性时,可以在原型对象内使用this关键词.如下面实例: 复制代码 代码如下: <script language="javascript" type="text/javascript"> function Person(){ this.name = "王美人"; this.age = 25; }; var p1 =
-
JavaScript window.setTimeout() 的详细用法
js的setTimeout方法用处比较多,通常用在页面刷新了.延迟执行了等等.但是很多javascript新手对setTimeout的用法还是不是很了解.虽然我学习和应用javascript已经两年多了,但是对setTimeout方法,有时候也要查阅资料.今天对js的setTimeout方法做一个系统地总结. setInterval与setTimeout的区别 说道setTimeout,很容易就会想到setInterval,因为这两个用法差不多,但是又有区别,今天一起总结了吧! setTimeo
-
javascript中闭包概念与用法深入理解
本文实例分析了javascript中闭包概念与用法.分享给大家供大家参考,具体如下: 1.问题的引出,什么时候会遇到闭包? 首先因为JS是没有块状作用域的,但是有函数作用域即函数作为了局部变量之间的界限,不同函数内的局部变量具有独立性, 因为JS没有块状作用域,笔者初学JS时,在事件的监听时,因为不理解JS中局部变量的作用域,犯过不少错误! (1)JS中的变量作用域 for(var i=0;i<9;i++) { } alert(i) //输出9 我们发现,虽然变量i是块状区域for()内的一个局
-
javascript删除元素节点removeChild()用法实例
本文实例讲述了javascript删除元素节点removeChild()用法.分享给大家供大家参考.具体分析如下: 操作DOM节点的方法:removeChild(),移除子节点,那么可以变通一下来实现移除指定的节点,我们可以先去找到要删除节点的父节点,然后在父节点中运用removeChild来移除我们想移除的节点. function removeElement(_element){ var _parentElement = _element.parentNode; if(_parentEleme
-
JavaScript函数节流概念与用法实例详解
本文实例讲述了JavaScript函数节流概念与用法.分享给大家供大家参考,具体如下: 最近在做网页的时候有个需求,就是浏览器窗口改变的时候需要改一些页面元素大小,于是乎很自然的想到了window的resize事件,于是乎我是这么写的 <!DOCTYPE html> <html> <head> <title>Throttle</title> </head> <body> <script type="text
-
JavaScript中的标签语句用法分析
本文实例分析了JavaScript中的标签语句用法.分享给大家供大家参考.具体分析如下: 最近在看w3school,然后看到js部分, <!DOCTYPE html> <html> <body> <script> cars=["BMW","Volvo","Saab","Ford"]; list: { document.write(cars[0] + "<br>
-
类的另类用法--数据的封装
类的另类用法--数据的封装一般的情况下,如果使用classname::property是不能访问到类的属性的,但可以用classname::method()使用类的方法.同样的也不能用objectname->property访问到类的方法里的变量.利用这一特点,我们可以将一些数据保存于类中,有点象c++的私有属性.<?class data { function value($var) { static $d = array(); if(func_num_args() > 1
-
JavaScript字符串对象(string)基本用法示例
本文实例讲述了JavaScript字符串对象(string)基本用法.分享给大家供大家参考,具体如下: 1.获取字符串的长度: var s = "Hello world"; document.write("length:"+s.length); 2.为字符串添加各种样式,如: var txt = "Some words"; document.write("<p>Big: " + txt.big() + "
随机推荐
- Web前端框架Angular4.0.0 正式版发布
- Shell时间(date)相关命令
- jquery实现的一个简单进度条效果实例
- Java实现随机验证码具体代码
- asp.net 自动将汉字转换成拼音第一个字母
- php无限级分类实现方法分析
- 修改MySQL数据库中表和表中字段的编码方式的方法
- js编写简单的计时器功能
- JavaScript 提升运行速度之循环篇 译文
- C++对象的动态建立与释放详解
- 随鼠标上下滚动的jquery代码
- 最简短的拖动对象代码实例演示
- 金山反病毒20050103_周报
- cdsdf.exe,kl.exe,explorcr.exe等病毒清除方法
- js实现用户输入的小写字母自动转大写字母的方法
- 安装MySQL常见的三种方式
- 微信小程序中吸底按钮适配iPhone X方案
- React Native日期时间选择组件的示例代码
- Ubuntu16.04源码安装Mininet
- 全面剖析java中的注解(Annotation)