说一说&&符
今天添加检测代码,还得添加好几套,好蛋疼。
为了省点事,全写在HTML的行间onclick里,为此专门琢磨了一下&&的用法。
一般用&&(除了逻辑判断里),是为了简写if语句,比如:
if(true) {alert(1)}
true && alert(1)
这俩效果是一样的,但是有return就不行了,如下:
(function(){if(true) {return true}})() // 正常
(function(){true && return true})() // 报错 SyntaxError: Unexpected token return
(function(){true && (return true)})() // 报错 SyntaxError: Unexpected token return
(function(){true && {return true}})() // 报错 SyntaxError: Unexpected token true
两个return错误,一个值错误,语法问题,这么写是不正确的,所以有return的时候,还是老老实实的if语句吧。
还有就是有else或else if的,不能用&&,用三目或者switch都行,但是注意switch检测的时候是===全等符,只能检测是true的情况,如下:
switch(true) {
case 1>2:
alert(1);
break;
case 1:
alert(2);
break;
default:
alert(3);
}
只会弹出3,1、2都不会弹出。
然后说一下多个连写的,连续触发多个函数的,如下:
if(true) {
alert(1);
alert(2);
}
true && alert(1),alert(2)
true && (alert(1),alert(2))
true && alert(1) || alert(2)
上面四种写法都能执行,弹出1和2,有返回值,是undefined,这样下面这句话不会执行:
true && alert(1),alert(2) && alert(3)
只会弹出1和2,没有3。
因为 , 这个运算符,返回的是最后一项的值,即上句代码中的 alert(2) 的返回值undefined,所以 alert(3) 没有执行,有两种改法,如下:
true && alert(1),alert(2),true && alert(3)
true && alert(1),alert(2) || alert(3)
都会弹出3来。
还有一种用法忘了说,用在赋值的时候,如下:
true && a = 1
true && (a = 1)
第一种会报错 ReferenceError: Invalid left-hand side in assignment ,要加上小括号,以为前一种 = 会把左边和右边各看成一部分,这样就报错了。
第二种则事将 (a = 1) 小括号看作一部分,然后 = 左a,右1,没有错误,并且返回1。
最后加一句||的,和&&一样,都会将里面的函数执行掉,只不过一个是遇到是true的就停,另一个是遇到是false的就停,要稍微注意下。
Array.prototype.map || Array.prototype.map = function(item, index, arr) {
// blablablabla...
};
通常的ES5功能补全用法。
都是自己瞎琢磨的,有不对之处还望指正!
说一说&&符的更多相关文章
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- SQL:指定名称查不到数据的衍伸~空格 换行符 回车符的批量处理
异常处理汇总-数据库系列 http://www.cnblogs.com/dunitian/p/4522990.html 先看看啥情况 复制查询到的数据,粘贴一下看看啥情况 那就批量处理一下~ 就这样 ...
- Java类访问权限修饰符
一.概要 通过了解Java4种修饰符访问权限,能够进一步完善程序类,合理规划权限的范围,这样才能减少漏洞.提高安全性.具备表达力便于使用. 二.权限表 修饰符 同一个类 同一个包 不同包的子类 不同包 ...
- iOS 方法修饰符
一.NS_DESIGNATED_INITIALIZER 用来修饰init方法,被修饰的方法称为designated initializer:没有被这个修饰的init方法称为convenience i ...
- 怎样在Dos里切换盘符
一:在Dos里切换盘符 a:在电脑左下角右击显示图片;(我用的是win10系统,其他系统类似) b:点击运行,输入cmd; c:点击确定: d:输入盘符:(如f:) 或F: 只写字母,不写分号是不行的 ...
- 杂项之python描述符协议
杂项之python描述符协议 本节内容 由来 描述符协议概念 类的静态方法及类方法实现原理 类作为装饰器使用 1. 由来 闲来无事去看了看django中的内置分页方法,发现里面用到了类作为装饰器来使用 ...
- .NET 基础 一步步 一幕幕[运算符、占位符、转义符]
运算符.占位符.转义符 好吧,在五局全胜之后,终于升到了三个钻,距离一个星星还有一大段距离,忽然想起来今天的博客还没写,果断坑队友,来写博客了....感觉以后还是每天更新一篇比较好.要不晚上就该熬 ...
- python描述符理解
Python中的描述符是一个相对底层的概念 descriptor Any object which defines the methods get(), set(), or delete(). Whe ...
- C#基础回顾(一)—C#访问修饰符
一.写在前面的话 好久没有停下来总结自己,转眼间15年过去好些天,回首过去的日子,亦或失去,亦或所得!生活的节奏,常常让我们带着急急忙忙的节奏去追赶,也许这并不是每个人所期望的生活方式!于他人,于自己 ...
- 关于Java语言中那些修饰符
一.在java中提供的一些修饰符,这些修饰符可以修饰类.变量和方法,在java中常见的修饰符有:abstract(抽象的).static(静态的).public(公共的).protected(受保护的 ...
随机推荐
- (转载)PHP常用函数
(转载)http://www.cnblogs.com/dreamhome/archive/2011/05/04/2037011.html <?php //==================== ...
- FFT(快速傅里叶变换):UVAoj 12298 - Super Poker II
题目:就是现在有一堆扑克里面的牌有无数张, 每种合数的牌有4中不同花色各一张(0, 1都不是合数), 没有质数或者大小是0或者1的牌现在这堆牌中缺失了其中的 c 张牌, 告诉你a, b, c接下来c张 ...
- 动态规划 HDU 1176
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Rotate List —— LeetCode
Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1 ...
- bzoj1433 [ZJOI2009]假期的宿舍(最大流)
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1717 Solved: 754[Submit][Stat ...
- HDU4099 Revenge of Fibonacci(高精度+Trie)
Revenge of Fibonacci Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 204800/204800 K (Java/ ...
- 存储的一些基本概念(HBA,LUN)
有些新手总是在各式各样的概念里绕来绕去,弄的不亦乐乎.所以我就把我的一些理解写了下来,供您参考.我说的不局限于任何一种具体产品和厂家,也可能有些说法和某些厂家的说法不一样,但是我觉得应该算的上是本原的 ...
- easyUI属性总结
1.div easyui-window 生成一个window窗口样式. 属性如下: 1)modal:是否生成模态窗口.true[是] fal ...
- 庖丁解牛FPPopover
作者:ani_di 版权所有,转载务必保留此链接 http://blog.csdn.net/ani_di 庖丁解牛FPPopover FPPopover是一个实现Popover控件的开源项目,比标准控 ...
- GIT使用指南
安装git,svn,ant,maven并配置环境变量 1.拷贝settings.xml到用户目录的.m2目录下. 2.打开git命令行,使用如下命令生成公钥私钥 ssh-keygen -t rsa 3 ...