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 相关文章推荐
document 和 document.all 分别什么时候用
Jun 22 Javascript
Track Image Loading效果代码分析
Aug 13 Javascript
js模拟实现Array的sort方法
Dec 11 Javascript
JavaScript面向对象之静态与非静态类
Feb 03 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
Mar 13 Javascript
jQuery过滤选择器详解
Jan 13 Javascript
Vue实现路由跳转和嵌套
Jun 20 Javascript
微信小程序解除10个请求并发限制
Dec 18 Javascript
JS使用队列对数组排列,基数排序算法示例
Mar 02 Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
Vue实现push数组并删除的例子
Nov 01 Javascript
vue中注册自定义的全局js方法
Nov 15 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
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
常用PHP框架功能对照表
2014/10/23 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
CodeIgniter框架常见用法工作总结
2017/03/16 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
用 Python 制作地球仪的方法
2020/04/24 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
物流专业大学的自我评价
2014/01/11 职场文书
文秘人员工作职责
2014/01/31 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
爱心捐款倡议书
2014/04/14 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
我的中国梦主题班会
2015/08/14 职场文书
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB