Javascript赋值语句中的“&&”操作符和"||"操作符
来源:互联网 发布:mysql garela 编辑:程序博客网 时间:2024/06/05 15:43
有这么一种常见的语句:
所以,把上面这个语句的Boolean()方法去掉,把a和b换成任意类型的变量,结果就很明显了。假设a为true,那么此时还无法决定c为true还是false,要看b的值才能决定,所以此时b是决定性因素;假设a为false,那么此时已经可以确定c为false,不用考虑b的值了,所以此时a是决定性因素。
var a = a || 4;那赋值语句中的“&&”操作符和"||"操作符是什么意思?如何知道这两个逻辑操作符两旁的数据哪个会被赋值到等号左边的变量里面?其实,会被赋值到等号左边的变量里面的一定是起决定性因素的那个变量。其实这就是if...else的变种,要么a=a,要么a=4。虽然没那么直接,不过也省了不少代码。
什么是起决定性因素的变量?
我们知道,两个bool型变量a和b进行与操作,只有a和b的值都为true时,返回结果才为true,只要有一个变量值为false,返回结果就为false。看下这个语句:
c = a && b
所以,把上面这个语句的Boolean()方法去掉,把a和b换成任意类型的变量,结果就很明显了。假设a为true,那么此时还无法决定c为true还是false,要看b的值才能决定,所以此时b是决定性因素;假设a为false,那么此时已经可以确定c为false,不用考虑b的值了,所以此时a是决定性因素。
或操作的原理和与操作类似,这里不再说明。
现在看下文章开头提到的那个语句,意思就是说如果a已经赋值(假设a是不为0的数),那么a的值不变,否则a=4。再往细了说,就是如果a已经赋值,那么Boolean(a)=true,或操作符右边的数就不看了,等式左边的a就等于右边的a;如果a没有复制,由于a已经声明,那么等式右边的a=undefined,Boolean(a)= false,这时看操作符右边,不管操作符右边的Bool值为什么,现在等式左边的a就等于这个数了。
需要注意的是, 如果一个变量为声明,打印这个变量时,系统会报错;如果声明了一个变量但没有复制,打印这个变量时,系统会打印出‘undefined’这个字符串。因此,在与/或操作中,如果起决定性因素的那个变量没有声明,那么系统是会报错的。
实际应用中,或操作符会更常用些。一般用于插件替换原始值(参见Swiper.js),或者是DOM操作,例如:
var length = length || $list.length
如果这个语句会执行多次,那么从第二次开始,每次执行这个语句时,就不会再去遍历这个数组的长度了,因为长度已经存在length变量里面了。
蛮简单的,感觉就像Java中&&和||
阅读全文
0 0
- Javascript赋值语句中的“&&”操作符和"||"操作符
- javascript中的语句和操作符
- 【JavaScript的赋值操作符】
- 赋值 和复合赋值操作符
- C++中的拷贝构造函数和赋值操作符
- JavaScript操作符及语句
- javascript中的操作符
- javascript中的 &&, ||, ! 操作符
- JavaScript中的‘&&’、‘||’操作符
- 重写子类中的赋值操作符
- 重写子类中的赋值操作符
- [Javascript 高级程序设计]学习心得记录5 操作符和语句
- 理解Javascript--作用域和赋值操作
- Javascript--作用域和赋值操作
- javascript中的||操作符与&&操作符
- 赋值运算符和操作符重载
- 复制构造函数和赋值操作符
- 复制构造函数和赋值操作符
- POJ 2823 Sliding Window
- Jvm内存溢出的几种情况
- springMVC常用注解
- hadoop源码编译、配置安装、测试
- (四)php参考手册---php数组
- Javascript赋值语句中的“&&”操作符和"||"操作符
- 数据库索引
- HTC Vive VR房产项目开发四(切换家具样式)
- maven实战(九)使用Cargo实现自动化部署
- 启用apache,发现80端口被占用【已解决】
- STVP烧录出错
- 一步步做Android自定义圆环百分比控件
- B
- Elasticsearch 性能监控2(五种常见问题的解决办法)