TEST12138

TEST12138

长路漫漫,唯心作伴。

前端js之&&和||

不要百度和写代码测试
第一个问题,下面这两行代码的输出是什么

console.log(1<2 && 4>5)
console.log(1<2 || 4>5)

第二个问题,下面这两行代码的输出又是什么

console.log(2 && 4)
console.log(2 || 4)

如果说你对这样的问题不清楚的话,说明你对 && 和 || 的运算流程是不清楚的
它们的运算流程是什么呢
看下面这张图

image

比如说console.log(2 && 4)2 和 4 都是 true

console.log( 2   &&  4  )
            true && true

返回的结果是最后判定的那一个的数据,4 是后判定的,所以返回的是 4
验证一下

image

console.log(2 || 4)怎么算呢
也是先做判定,2 是 true,|| 运算只要一个为真就行,这样就不用判定后面的 4 了
因为返回的结果是最后判定的那一个的数据,所以返回的是 2
验证一下

image

那么在实际开发的时候怎么用呢

比如说我们这里有个对象
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()

这个大家可以自己想想

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。