说一说&&符
2024-09-20 02:39:05
今天添加检测代码,还得添加好几套,好蛋疼。
为了省点事,全写在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功能补全用法。
都是自己瞎琢磨的,有不对之处还望指正!
最新文章
- WPF系列 Style
- Struts2之提交对象数组至后台
- Metro UI 菜单(Winform)
- MySql中时间比较的实现
- LeetCode——Gas Station
- SparkSQL External Datasource简易使用之CSV
- string.Equals 比较2个字符串是否相同忽略大小写
- Qt on_pushButton_clicked()的用法【worldsing笔记】
- web-请求无缓存
- Duanxx的Altium Designer学习:PCB试想一下,在目前的水平
- Spring.Net-创建对象
- Flask 扩展 国际化 本地化
- Gazebo機器人仿真學習探索筆記(四)模型編輯
- J2EE学习从菜鸟变大鸟之九 深入浅出理解 Servlet-----实例解析
- python并发编程之IO阻塞基础知识点
- Dynamics 365 Online-Unified User Interface
- 数据库的OLE字段写入长二进制文件
- CentOS6—HAProxy安装与配置
- nginx做负载均衡时其中一台服务器挂掉宕机时响应速度慢的问题解决
- man命令使用