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


Posted in Javascript onMarch 08, 2017

大家都知道在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

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

当然也可以如下玩

String.prototype.bool = function() {
    return (/^true$/i).test(this);
};
console.log("true".bool());

以上这篇JS字符串false转boolean的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript:void(0)的真正含义实例分析
Aug 20 Javascript
JQuery live函数
Dec 24 Javascript
Jquery弹出层插件ThickBox的使用方法
Dec 09 Javascript
jQuery插件zepto.js简单实现tab切换
Jun 16 Javascript
跟我学习javascript的执行上下文
Nov 18 Javascript
Node.js 数据加密传输浅析
Nov 16 Javascript
微信小程序 地图map详解及简单实例
Jan 10 Javascript
详解使用React全家桶搭建一个后台管理系统
Nov 04 Javascript
JavaScript基于数组实现的栈与队列操作示例
Dec 22 Javascript
详解微信小程序之一键复制到剪切板
Apr 24 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
Jul 15 Javascript
vue 修改 data 数据问题并实时显示操作
Sep 07 Javascript
原生js实现选项卡功能
Mar 08 #Javascript
js, jQuery实现全选、反选功能
Mar 08 #Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 #Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
Mar 08 #Javascript
详谈jQuery中的一些正则匹配表达式
Mar 08 #Javascript
浅谈原生JS实现jQuery的animate()动画示例
Mar 08 #Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 #Javascript
You might like
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
php中数组最简单的使用方法
2020/12/27 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
JsRender for object语法简介
2014/10/31 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
个人评价范文分享
2014/01/11 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
家长会标语
2014/06/24 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
就业协议书范本
2014/10/08 职场文书