大家都知道在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函数中取值
# 我用
# 变成了
# 给大家
# 单引号
# 值为
# 的是
# 都是
# 不传
# 这是
# 我也
# 我想
# 是个
# 来了
# 大家都
# 这个问题
# 希望能
# 去做
# 布尔
# 造成了
# 这篇
相关文章:
高防服务器租用指南:配置选择与快速部署攻略
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何在IIS中新建站点并配置端口与IP地址?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
如何获取免费开源的自助建站系统源码?
长沙做网站要多少钱,长沙国安网络怎么样?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何通过FTP空间快速搭建安全高效网站?
如何快速搭建高效可靠的建站解决方案?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
如何在万网ECS上快速搭建专属网站?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
黑客如何通过漏洞一步步攻陷网站服务器?
在线制作视频的网站有哪些,电脑如何制作视频短片?
建站主机选购指南:核心配置优化与品牌推荐方案
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何配置支付宝与微信支付功能?
北京网站制作的公司有哪些,北京白云观官方网站?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
C#如何在一个XML文件中查找并替换文本内容
微信小程序制作网站有哪些,微信小程序需要做网站吗?
如何在香港服务器上快速搭建免备案网站?
如何用AWS免费套餐快速搭建高效网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
电脑免费海报制作网站推荐,招聘海报哪个网站多?
如何在万网自助建站中设置域名及备案?
建站之星如何优化SEO以实现高效排名?
如何通过IIS搭建网站并配置访问权限?
如何彻底卸载建站之星软件?
如何在阿里云域名上完成建站全流程?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
C++如何编写函数模板?(泛型编程入门)
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
微信小程序 五星评分(包括半颗星评分)实例代码
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
建站之星如何保障用户数据免受黑客入侵?
如何高效利用200m空间完成建站?
如何在宝塔面板中修改默认建站目录?
如何零基础在云服务器搭建WordPress站点?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
已有域名能否直接搭建网站?
建站主机功能解析:服务器选择与快速搭建指南
如何快速上传建站程序避免常见错误?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
建站之星24小时客服电话如何获取?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
教学论文网站制作软件有哪些,写论文用什么软件
?
*请认真填写需求信息,我们会在24小时内与您取得联系。