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 相关文章推荐
在次封装easyui-Dialog插件实现代码
Nov 14 Javascript
调用HttpHanlder的几种返回方式小结
Dec 20 Javascript
JavaScript程序员应该知道的45个实用技巧
Mar 04 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
js简单实现Select互换数据的方法
Aug 17 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
js利用appendChild对标签进行排序的实现方法
Oct 16 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 Javascript
JS及JQuery对Html内容编码,Html转义
Feb 17 Javascript
深入浅析JSONAPI在PHP中的应用
Dec 24 Javascript
微信小程序实现页面浮动导航
Jan 28 Javascript
js简单实现自动生成表格功能示例
Jun 02 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 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
Node.js学习入门
2017/01/03 Javascript
Js apply方法详解
2017/02/16 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
八一慰问活动方案
2014/02/07 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
公司转让协议书
2016/03/19 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
基于Python实现的购物商城管理系统
2021/04/27 Python
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
Pygame如何使用精灵和碰撞检测
2021/11/17 Python