我碰巧知道以下代码
这是代码,非常简单:
var test = 0 || -1 ;
console.log(test);
那么控制台中的输出是-1
不知何故,我对javascript真的很陌生,
我想到的是0代表JS 中的Boolean False,因此||
运算符似乎忽略了 0 并将值 -1 分配给变量
那我说得对吗?我只想确认
我碰巧知道以下代码
这是代码,非常简单:
var test = 0 || -1 ;
console.log(test);
那么控制台中的输出是-1
不知何故,我对javascript真的很陌生,
我想到的是0代表JS 中的Boolean False,因此||
运算符似乎忽略了 0 并将值 -1 分配给变量
那我说得对吗?我只想确认
||
— expr1 || expr2
(逻辑或)
如果可以转换为 true,则返回 expr1;否则,返回 expr2。因此,当与布尔值一起使用时, || 如果任一操作数为真,则返回真;如果两者都为假,则返回假..
&&
— expr1 && expr2
(逻辑与)
如果可以转换为 false,则返回 expr1;否则,返回 expr2。因此,当与布尔值一起使用时,如果两个操作数都为真,&& 返回真;否则,返回 false。
Javascript 中的所有值要么是“真”,要么是“假”。
以下值在条件语句中等效于 false :
""
(\ ''
)所有其他值都等价于 true。
所以...var test = 0 || -1 ;
返回-1
。
如果是 var test = 0 || false || undefined || "" || 2 || -1
它会返回2
MDN 上的逻辑运算符
您可以使用Nullish 合并运算符 (??)
空合并运算符 (??) 是一个逻辑运算符,当其左侧操作数为空或未定义时返回其右侧操作数,否则返回其左侧操作数。
只有 null 和 undefined 是假的。0 将被视为真。但请注意:空字符串也会被认为是真的!
console.log('0 ?? 1 ->', 0 ?? 1) // expected output: 0
console.log('null ?? 1 -> ', null ?? 1) // expected output: 1
console.log('undefined ?? 1 ->', undefined ?? 1) // expected output: 1
console.log('"" ?? 1 ->', "" ?? 1) // expected output: ""