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小知识
Oct 15 Javascript
js写的方法实现上传图片之后查看大图
Mar 05 Javascript
jQuery实现的仿select功能代码
Aug 19 Javascript
基于javascript实现图片预加载
Jan 05 Javascript
Node.js实现JS文件合并小工具
Feb 02 Javascript
jquery ajax双击div可直接修改div中的内容
Mar 04 Javascript
JavaScript实现相册弹窗功能(zepto.js)
Jun 21 Javascript
微信小程序 教程之条件渲染
Oct 18 Javascript
vue-froala-wysiwyg 富文本编辑器功能
Sep 19 Javascript
node实现mock-plugin中间件的方法
Dec 25 Javascript
Openlayers+EasyUI Tree动态实现图层控制
Sep 28 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
Nov 12 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 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
微信小程序开发探究
2016/12/27 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
全面分析Python的优点和缺点
2018/02/07 Python
python 接收处理外带的参数方法
2018/12/03 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
python添加菜单图文讲解
2019/06/04 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
Python urllib2运行过程原理解析
2020/06/04 Python
Python如何输出警告信息
2020/07/30 Python
python爬取天气数据的实例详解
2020/11/20 Python
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
加拿大留学自荐信
2014/01/28 职场文书
购房个人委托书范本
2014/10/11 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
催款函怎么写
2015/06/24 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
python 安全地删除列表元素的方法
2022/03/16 Python
如何使用SQL Server语句创建表
2022/04/12 SQL Server