提问人:Dumindu Jayasekara 提问时间:11/12/2023 更新时间:11/12/2023 访问量:33
字符串值未正确分析为布尔值
String values are not parsed correctly into boolean
问:
以下代码将字符串 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;
我认为这个操作员也这样做。但仍然不好!
答:
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
非常欢迎!请将其标记为已接受的答案,以便将主题存档。
评论