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 相关文章推荐
jquery 仿QQ校友的DIV模拟窗口效果源码
Mar 24 Javascript
js比较和逻辑运算符的介绍
Mar 10 Javascript
jQuery中 attr() 方法使用小结
May 03 Javascript
js跨域请求数据的3种常用的方法
Dec 01 Javascript
JS实现图片的不间断连续滚动的简单实例
Jun 03 Javascript
AngularJS应用开发思维之依赖注入3
Aug 19 Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 Javascript
基于input框覆盖掉数字英文的实例讲解
Jul 21 Javascript
微信小程序之页面拦截器的示例代码
Sep 07 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
Jun 27 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
Apr 13 Javascript
如何检测JavaScript中的死循环示例详解
Aug 30 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 mysql 判断update之后是否更新了的方法
2012/01/10 PHP
php开发文档 会员收费1期
2012/08/14 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
javascript工具库代码
2012/03/29 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
python动态监控日志内容的示例
2014/02/16 Python
Python中的startswith和endswith函数使用实例
2014/08/25 Python
批处理与python代码混合编程的方法
2016/05/19 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
python sort、sort_index方法代码实例
2019/03/28 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
书法培训心得体会
2014/01/05 职场文书
消防安全管理制度
2014/02/01 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
MySQL分库分表详情
2021/09/25 MySQL
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫