将 True 或 False 转换为显式的布尔值,即 True 或 False

我有一个变量,我们叫它 toto

这个 toto可以设置为 undefinednull、字符串或对象。

我想检查 toto是否设置为数据,这意味着设置为字符串或对象,既不是 undefined也不是 null,并在另一个变量中设置相应的布尔值。

我想到了语法 !!,它看起来像这样:

var tata = !!toto; // tata would be set to true or false, whatever toto is.

如果 toto 是 undefined或者 nulltrue,那么第一个 !将被设置为 false,第二个 !将把它反转过来。

但它看起来有点奇怪。那么,有没有更清晰的方法来做到这一点呢?

I already looked at 这个问题, but I want to set a value in a variable, not just check it in an if statement.

102535 次浏览

Yes, you can always use this:

var tata = Boolean(toto);

以下是一些测试:

for (var value of [0, 1, -1, "0", "1", "cat", true, false, undefined, null]) {
console.log(`Boolean(${typeof value} ${value}) is ${Boolean(value)}`);
}

结果:

Boolean(number 0) is false
Boolean(number 1) is true
Boolean(number -1) is true
Boolean(string 0) is true
Boolean(string 1) is true
Boolean(string cat) is true
Boolean(boolean true) is true
Boolean(boolean false) is false
Boolean(undefined undefined) is false
Boolean(object null) is false

!!o也是 Boolean(o)的简写,工作原理完全相同。 (用于将 truthy/falsy转换为 true/false)。

let o = {a: 1}
Boolean(o) // true
!!o // true
// !!o is shorthand of Boolean(o) for converting `truthy/falsy` to `true/false`

请注意