全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS字符串false转boolean的方法(推荐)

大家都知道在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小时内与您取得联系。