最简洁的转换为布尔值的方法

Ara*_*hor 74 javascript boolean-expression

我有一个变量.我们称之为toto.

toto可以设置为undefined,, null字符串或对象.

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

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

var tata = !!toto; // tata would be set to true or false, whatever toto is.
Run Code Online (Sandbox Code Playgroud)

第一个!将被设置为false如TOTO的undefined还是nulltrue别人,和第二个会倒转.

但它看起来有点令人毛骨悚然......所以有更好/更清洁的方法吗?

我已经看过这个问题了,但我想在变量中设置一个值,而不只是在if语句中检查它.

Rob*_*bok 123

是的,你可以随时使用:

var tata = Boolean(toto);
Run Code Online (Sandbox Code Playgroud)

以下是一些测试:

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

结果:

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
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,当您可能希望它为false时,布尔值("false")为真. (66认同)
  • 为什么你想要字符串"假"是假的呢?甚至php也不这样做:D (34认同)
  • 究竟.这就是为什么在使用短语"false"时必须小心,如果它在引号中并因此被解释为String.你可能认为你把它变成了假,但事实上它会归还为真 - 因此是最初的警告. (6认同)
  • 字符串 'false' 永远不应该被计算为 falsy。区别对待字符串“false”和布尔值“false”有重要原因。想象一下,如果有人将他们的名字作为“假”输入到您的数据库中...您想打印该名字还是开始抛出错误?根据字符串的内容自动将字符串转换为不同的类型是一个危险的游戏 (4认同)
  • 是的 true `Boolean("false")` 返回 true 哈哈,使用这个 `Boolean(JSON.parse("false"))` (3认同)
  • 他的意思是“布尔值(“假”)”。 (2认同)
  • @NoahDavid它返回true.转换为`false`的唯一字符串是空字符串("""). (2认同)