问题来源
微信小程序页面跳转时, 会带参数, 该值可能是true、也可能是false。 那么通过options解析出来的参数为string类型, 期望转成boolean类型后进行不同操作。
期望
借助Boolean()方法, 传入'false'时, 输出false; 传入'true'时, 输出true.
我们先来看看如下一段代码能否实现预期.
console.log('类型转换', Boolean('false'))
console.log('类型转换', Boolean('true'))
实际运行结果不如预期,那么我们看看该如何解决呢?
解决方案
1. 匹配字符串
const showTips = isPartner === 'true' ? true: false
console.log(showTips)
2. prototype属性
String.prototype.bool = function() {
return (/^true$/i).test(this);
};
console.log("true".bool());
console.log("false".bool());
总结
用Boolean()类型去判定时, 你会发现0、-0、null、""、false、undefined 或 NaN,这些都可以自动转化为布尔的 false,而字符串的"false"是不是false呢,答案是否定的, 这点要特别注意⚠️!
写在最后
若有错误之处, 恳请留言, 定会及时更正!
若觉着对您有帮助的话恳请点个赞或着收藏吧!