JS逻辑运算 你真的看得明白吗

JS 的 || && 运算

Array.from([1, , 2, , 3], (n) => n || 0)
复制代码

最后生成了[1, 0, 2, 0, 3],why?为何是[1, 0, 2, 0, 3],难道不该该是 [true,false,true,false,true]吗?spa

若是真的明白的人能够不用再往下看了

我接触过不少其余语言,因此在看到这段代码的返回值是这个,我很不能理解,逻辑运算符不该该返回的是true和false吗,带着疑问,我作了一些实验code

||运算

a = 0 || 1
// 1

a = undefined || 'sd'
// 'sd'

a = null || undefined
// undefined

a = 1 || 0
// 1

a = 1 || 2
//1

a = {} || 3
//{}

a = 'fsa' || null
// 'fsa'
复制代码

因而可知,当执行|| 运算时 当第一个表达式为false时就会返回第二个表达式的值,当第一个表达式为true就会返回第一个表达式的值。结合逻辑运算||的运算规则,当第一个为true,就返回true,不会去看第二个,当第一个为false时,才会去看第二个,class

再来看&&运算

a =  1 && 0
// 0

a = {} && null
// null

a =  'fsa' && undefined
// undefined

a = 0 && {}
// 0

a = null && 'dsa'
// null

a = undefined && 1 
// undefined
复制代码

因而可知,当执行&& 运算时 当第一个表达式为true时就会返回第二个表达式的值,当第一个表达式为false就会返回第一个表达式的值。结合逻辑运算&&的运算规则,当第一个为true,就去看第二个是否为true,而后再决定为true or false,当第一个为false时,不会去看第二个,直接返回false总结

总结

综上所诉,咱们能够得出js进行逻辑运算时,会返回逻辑运算最后运算那个表达式的值,因此Array.from([1, , 2, , 3], (n) => n || 0) 当n为空时,会返回0。语言

相关文章
相关标签/搜索