前端 js 之 && 和 ||
不要百度和写代码测试
第一个问题,下面这两行代码的输出是什么
console.log(1<2 && 4>5)
console.log(1<2 || 4>5)
第二个问题,下面这两行代码的输出又是什么
console.log(2 && 4)
console.log(2 || 4)
如果说你对这样的问题不清楚的话,说明你对&&和||的运算流程是不清楚的
它们的运算流程是什么呢
看下面这张图
比如说console.log(2 && 4)
2和4都是true
console.log( 2 && 4 )
true && true
返回的结果是最后判定的那一个的数据,4是后判定的,所以返回的是4
验证一下
console.log(2 || 4)
怎么算呢
也是先做判定,2是true,||运算只要一个为真就行,这样就不用判定后面的4了
因为返回的结果是最后判定的那一个的数据,所以返回的是2
验证一下
那么在实际开发的时候怎么用呢
比如说我们这里有个对象var obj = {}
假设它是从其它什么地方来的,你也不知道这对象里有哪些属性
我们现在要从这个对象里读一个属性a
我的需求是如果a有值就读a,如果没有值就给个默认值
正常写的话就会写成这样
var a = obj.a
if(!a) {
a='default'
}
用||写的话,只需要
var a = obj.a || 'default'
代码简洁许多
根据判定流程,obj.a有值的话,返回是true,返回的结果是最后判定的那一个的数据,所以a = obj.a
obj.a没有值的话,会继续判定后面的,'default'返回是true,所以a = 'default'
再比如说,我们想知道obj里有没有一个函数,有的话就调用它
常规写法就是
if(obj.func) {
obj.func()
}
用&&写的话就是
obj.func && obj.func()
这个大家可以自己想想
-
JavaScript
-
web
-
前端
-
面试
又学到新东西了