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 学习之旅 (3)
Feb 05 Javascript
深入document.write()与HTML4.01的非成对标签的详解
May 08 Javascript
JS判断数组中是否有重复值得三种实用方法
Aug 16 Javascript
探讨js中的双感叹号判断
Nov 11 Javascript
利用js制作html table分页示例(js实现分页)
Apr 25 Javascript
基于jQuery创建鼠标悬停效果的方法
Mar 07 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
Apr 16 Javascript
js时钟翻牌效果实现代码分享
Jul 31 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
Sep 18 Javascript
基于jquery实现省市区三级联动效果
Dec 25 Javascript
jQuery unbind 删除绑定事件详解
May 24 Javascript
手把手教你如何编译打包video.js
Dec 09 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
基于mysql的论坛(3)
2006/10/09 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
Node.js学习入门
2017/01/03 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
layui点击按钮添加可编辑的一行方法
2018/08/15 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
Python selenium自动化测试模型图解
2020/04/15 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
面试求职的个人自我评价
2013/11/16 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
个人更名证明
2015/06/23 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL