说一说&&符
今天添加检测代码,还得添加好几套,好蛋疼。
为了省点事,全写在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(受保护的 ...
随机推荐
- 【有源汇上下界最大流】ZOJ 3229 Shoot the Bullet
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3229 题目大意: n天给m个女孩拍照(1<=n<= ...
- 解决 SQL Server 耗尽内存的情况
如果您碰到SQL Server服务造成内存不断扩展最终系统死机等情况,请按照以下方法解决. 原理:SQL Server 2000引入的动态内存分配机制,一般不能很好的回收内存,如果计算机一直不关 ...
- vijos1891 学姐的逛街计划(线性规划)
P1891学姐的逛街计划 描述 doc 最近太忙了, 每天都有课. 这不怕, doc 可以请假不去上课.偏偏学校又有规定, 任意连续 n 天中, 不得请假超过 k 天. doc 很忧伤, 因为他还要陪 ...
- Esxi 5.0下配置LSI SAS RAID卡
公司有几台服务器,安装的是ESXI5.0的虚拟机,原来使用的是普通的台式机,现在新购的专用服务器并安装的LSI 8708 SAS RAID卡(服务器自带的板载RAID卡ESXI不支持),现在要将虚拟机 ...
- java_method_Log输出日志的方法
package cn.com.qmhd.tools; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigura ...
- 关于Form窗体的StartPosition 属性如何设置的问题
1.让窗体在启动时在指定位置出现 form1.StartPosition Manual CenterScreen WindowsDefaultLocation (default) WindowsDef ...
- [Javascript] Using console.count to Count Events
Learn how to user console.count in order to log out how many times a given thing has happened. ; i & ...
- 将JDBC ResultSet结果集变成List
private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>() ...
- URL重写:RewriteCond指令与RewriteRule 指令格式(转)
Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范.平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等.本文将针对mod_rewrite和URL匹配的技术细 ...
- Qt深入:不能不知道的Type、Attribute和Flags
Qter高手与新手的区别在于:知道还是不知道 Qt不是开发语言,所以无所谓谁厉害.但使用他的Qter却有着差异,也许是面向对象语言本身的.或者实际经验上的.而对于Qt本身来说,高手与新手最显著的差异在 ...