字符串值未正确分析为布尔值

String values are not parsed correctly into boolean

提问人:Dumindu Jayasekara 提问时间:11/12/2023 更新时间:11/12/2023 访问量:33

问:

以下代码将字符串 URL param 'verified=false' 解析为布尔值

  const verified = searchParams.get("verified");
  const [message, setMessage] = useState(null);

  useEffect(() => {
    console.log(verified);
    let isVerified = Boolean(verified);
    console.log(isVerified);
    let message = isVerified
      ? "User succesfully verified by email!"
      : "verification failed!";
    setMessage(message);
  }, []);

据此,更改消息的状态。

但是浏览器日志显示

page.js:14 false
page.js:16 true

两个日志看起来不同,第 14 行确实是一个字符串。这里面发生了什么?

我试过了

let isVerified = !!verified;

我认为这个操作员也这样做。但仍然不好!

JavaScript reactjs node.js 解析 布尔

评论


答:

1赞 kfarkas 11/12/2023 #1

verified是字符串,所以你必须将它与字符串进行比较,因为返回 .Boolean("false")true

我建议你写这样的东西:


function stringBooleanToBoolean(stringValue: string): boolean {
  return stringValue.toLowerCase() ==== true.toString()
}

编辑: 任何非空字符串都是真,所以如果你有它就是 truty,而空字符串是假的,就像是假的一样 不幸的是,没有内置的方法来确定字符串是表示真正的布尔值还是假布尔值"aa"""

也可以使用正则表达式,因此类似的东西可以执行与上面的脚本相同的操作。 请注意,您还必须做好不区分大小写的准备/true/i

评论

0赞 Dumindu Jayasekara 11/12/2023
啊,我明白了!我以为 Boolean() 解析像 parseInt('5') ==> 5(显式值) 谢谢你的回答 😍
0赞 kfarkas 11/12/2023
非常欢迎!请将其标记为已接受的答案,以便将主题存档。