9

我碰巧知道以下代码

这是代码,非常简单:

var test = 0 || -1 ;
console.log(test);

那么控制台的输出是-1

不知何故,我对javascript真的很陌生,

我想到的是0代表 JS 中的 Boolean False,因此||运算符似乎忽略了 0 并将值 -1 分配给变量

我是对的吗?我只想确认

4

2 回答 2

18
  • ||expr1 || expr2 (逻辑或)

    如果可以转换为 true,则返回 expr1;否则,返回 expr2。因此,当与布尔值一起使用时,|| 如果任一操作数为真,则返回真;如果两者都是假的,则返回假..

  • &&expr1 && expr2 (逻辑与)

    如果可以转换为 false,则返回 expr1;否则,返回 expr2。因此,当与布尔值一起使用时,如果两个操作数都为真,则 && 返回真;否则,返回 false。

Javascript 中的所有值要么是“真”,要么是“假”。
以下值等效于条件语句中的 false :

  • 错误的
  • 空值
  • 不明确的
  • 空字符串""(\ '')
  • 数字 0
  • 数字 NaN

所有其他值都等效于 true。


所以...var test = 0 || -1 ;返回-1

如果是 var test = 0 || false || undefined || "" || 2 || -1它会返回2


MDN上的逻辑运算符

于 2012-03-06T07:00:49.330 回答
2

您可以使用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: ""

于 2021-10-15T19:23:05.187 回答