大家都知道在JS的世界里, 0、-0、null、""、false、undefined 或 NaN,这些都可以自动转化为布尔的 false,那么字符串的"false"是不是false呢,答案是否定的,if("false") 来判断的话,是等于true的

所以今天遇到个SB问题,就是后台velocity往前台传参,大家一般都是这么写。
0.背景
var hasAuth = $!auth ; // 这个auth就是利用velocity传到前台的
这么写就有一个风险,那就是,如果后台忘记往前台传这个参数,就造成了如下的
var hasAuth = ; // 语法错误,因为;之前是个空,这是由于velocity木有传参,前台是自然而然的变成了空白,空白!!
1、解决1
那么如何解决这种因为前后端不分离,velocity忘记传到前台而产生的这个问题呢,当当当当,我想到了一个办法就是利用单引号将变量括住,这样后台不传参,我也不怕不怕啦,代码变成了这样
var hasAuth = '$!auth' ; // 这样就好啦,即使后台不传参到前台,我特么也不怕报语法错误了。
2、解决2
然而事情并没有到此结束,因为我发现如果后台没有忘记往前台传参,后台获得的权限绝逼不是true就是false,那么问题来了,代码经过渲染变成了下面这个样纸。
var hasAuth = 'true'; 或者 var hasAuth = 'false';
那么下面再做判断的时候呢
1.
var hasAuth = 'true';
if(hasAuth){ //此时的hasAuth是true
}
2.
var hasAuth = 'false';
if(hasAuth){ //此时的hasAuth还是true
}
这该如何是好!!!
3、解决3
我特么灵机一动,那么我用Boolean的构造方法去做处理岂不是就ok了?我特么太聪明了,于是这么写
var hasAuth = Boolean('$!auth');
还是和刚才一样
1.当后台传到前台的auth是true时,Boolean('$!auth') === Boolean('true') === true;
var hasAuth = 'true';
if(hasAuth){ //此时的hasAuth是true
}
2.当后台传到前台的auth是false时,Boolean('$!auth') === Boolean('false') === true;
var hasAuth = 'false';
if(hasAuth){ //此时的hasAuth还是true
}
为咩啊
4、解决4
我查阅了一下w3c,发现解释如下
var myBoolean=new Boolean();
//下面的所有的代码行均会创建初始值为 false 的 Boolean 对象。
var myBoolean=new Boolean();
var myBoolean=new Boolean(0);
var myBoolean=new Boolean(null);
var myBoolean=new Boolean("");
var myBoolean=new Boolean(false);//不带单引号的是false
var myBoolean=new Boolean(NaN);
//下面的所有的代码行均会创初始值为 true 的 Boolean 对象:
var myBoolean=new Boolean(1);
var myBoolean=new Boolean(true);
var myBoolean=new Boolean("true");
var myBoolean=new Boolean("false");//带单引号的字符串false最终等于true
var myBoolean=new Boolean("Bill Gates");
靠了,这条路也想不通,可爱的一休哥,赶紧想想注意啊!
5、解决5 最终解决方案
灵机一动,哇塞,那么我用字符串去对比字符串总可以了吧?
于是最终的检测方法如下
var hasAuth = '$!auth' === 'true' ; 1.$!auth 为 true 时 var hasAuth = 'true' === 'true' ; console.log(hasAuth);//true 2.$!auth 为 false 时 var hasAuth = 'false' === 'true' ; console.log(hasAuth);//false
当然也可以如下玩
String.prototype.bool = function() {
return (/^true$/i).test(this);
};
console.log("true".bool());
以上这篇JS字符串false转boolean的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# js 字符串转boolean
# 在python中bool函数的取值方法
# 对Python2与Python3中__bool__方法的差异详解
# Python中使用Boolean操作符做真值测试实例
# 让Django的BooleanField支持字符串形式的输入方式
# Django错误:TypeError at / ''bool'' object is not cal
# js中bool值的转换及“&&”、“||”、 “!!”详解
# Java中Boolean与字符串或者数字1和0的转换实例
# Python如何在bool函数中取值
# 我用
# 变成了
# 给大家
# 单引号
# 值为
# 的是
# 都是
# 不传
# 这是
# 我也
# 我想
# 是个
# 来了
# 大家都
# 这个问题
# 希望能
# 去做
# 布尔
# 造成了
# 这篇
相关文章:
如何快速启动建站代理加盟业务?
建站主机选哪家性价比最高?
如何规划企业建站流程的关键步骤?
建站主机核心功能解析:服务器选择与网站搭建流程指南
安徽网站建设与外贸建站服务专业定制方案
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
公司网站的制作公司,企业网站制作基本流程有哪些?
香港服务器租用费用高吗?如何避免常见误区?
香港网站服务器数量如何影响SEO优化效果?
高端网站建设与定制开发一站式解决方案 中企动力
中山网站制作网页,中山新生登记系统登记流程?
常州自助建站费用包含哪些项目?
如何在腾讯云免费申请建站?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
网站制作公司排行榜,四大门户网站排名?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
C#怎么使用委托和事件 C# delegate与event编程方法
建站之星3.0如何解决常见操作问题?
郑州企业网站制作公司,郑州招聘网站有哪些?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
网站图片在线制作软件,怎么在图片上做链接?
如何配置支付宝与微信支付功能?
网站企业制作流程,用什么语言做企业网站比较好?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
建站之星2.7模板:企业网站建设与h5定制设计专题
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
制作网站的软件免费下载,免费制作app哪个平台好?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
音响网站制作视频教程,隆霸音响官方网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何选择服务器才能高效搭建专属网站?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
建站之星代理平台如何选择最佳方案?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
建站之星在线版空间:自助建站+智能模板一键生成方案
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
如何通过NAT技术实现内网高效建站?
七夕网站制作视频,七夕大促活动怎么报名?
如何将凡科建站内容保存为本地文件?
建站之星安装模板失败:服务器环境不兼容?
定制建站是什么?如何实现个性化需求?
高端建站三要素:定制模板、企业官网与响应式设计优化
建站之星×万网:智能建站系统+自助建站平台一键生成
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
山东网站制作公司有哪些,山东大源集团官网?
如何用wdcp快速搭建高效网站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
,想在网上投简历,哪几个网站比较好?
*请认真填写需求信息,我们会在24小时内与您取得联系。