全网整合营销服务商

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

免费咨询热线: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函数中取值  # 我用  # 变成了  # 给大家  # 单引号  # 值为  # 的是  # 都是  # 不传  # 这是  # 我也  # 我想  # 是个  # 来了  # 大家都  # 这个问题  # 希望能  # 去做  # 布尔  # 造成了  # 这篇 


相关文章: 制作电商网页,电商供应链怎么做?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  实例解析angularjs的filter过滤器  如何用免费手机建站系统零基础打造专业网站?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何使用Golang安装API文档生成工具_快速生成接口文档  如何撰写建站申请书?关键要点有哪些?  如何选择高效便捷的WAP商城建站系统?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  建站之星如何助力企业快速打造五合一网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  为什么Go需要go mod文件_Go go mod文件作用说明  b2c电商网站制作流程,b2c水平综合的电商平台?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何在Windows 2008云服务器安全搭建网站?  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何快速搭建支持数据库操作的智能建站平台?  如何快速生成可下载的建站源码工具?  营销式网站制作方案,销售哪个网站招聘效果最好?  建站主机选购指南:核心配置优化与品牌推荐方案  如何在新浪SAE免费搭建个人博客?  如何做静态网页,sublimetext3.0制作静态网页?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  ,购物网站怎么盈利呢?  Java解压缩zip - 解压缩多个文件或文件夹实例  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Android自定义控件实现温度旋转按钮效果  设计网站制作公司有哪些,制作网页教程?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何在VPS电脑上快速搭建网站?  建站之星与建站宝盒如何选择最佳方案?  网站制作需要会哪些技术,建立一个网站要花费多少?  如何自定义建站之星网站的导航菜单样式?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  黑客入侵网站服务器的常见手法有哪些?  建站之星多图banner生成与模板自定义指南  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何用VPS主机快速搭建个人网站?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何在云主机上快速搭建网站?  制作旅游网站html,怎样注册旅游网站?  如何登录建站主机?访问步骤全解析  Python lxml的etree和ElementTree有什么区别  C++中引用和指针有什么区别?(代码说明)  家庭建站与云服务器建站,如何选择更优?  Swift中循环语句中的转移语句 break 和 continue  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何零基础在云服务器搭建WordPress站点? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。