问题脚本
- var str = 'false';
- if(str){
- alert('正确');
- }else{
- alert('false');
- }
var str = 'false';
if(str){
alert('正确');
}else{
alert('false');
}
运行上面的脚本你会发现str不管是“true”还是“false”,都会跳出“正确”提示框。(看来这javascript弱类型还是有类型啊。)
官方说明:
Note: If the value parameter is omitted, or is 0, -0, null, "", false, undefined, or NaN, the object is set to false. Otherwise it is set to true (even with the string "false")!
主要是Boolean的构造函数对于字符串只要不为空都为"true";
解决方法:
- var str = 'false';
- if(str ==='true'){
- alert('正确');
- }else{
- alert('false');
- }
var str = 'false';
if(str ==='true'){
alert('正确');
}else{
alert('false');
}
这样除了true之外,其他都是false;
本文深入探讨了JavaScript中布尔值与字符串之间的隐式转换规则,特别是对于'false'字符串作为布尔值使用时的行为。通过实例演示了正确的判断方式,并解释了官方文档中的相关注释。

554

被折叠的 条评论
为什么被折叠?



