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 相关文章推荐
超级强大的表单验证
Jun 26 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
Sep 04 Javascript
javascript实时显示北京时间的方法
Mar 12 Javascript
基于jQuery+JSON的省市二三级联动效果
Jun 05 Javascript
基于jquery实现左右按钮点击的图片切换效果
Jan 27 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
Dec 03 Javascript
Angular的自定义指令以及实例
Dec 26 Javascript
解析ajaxFileUpload 异步上传文件简单使用
Dec 30 Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 Javascript
微信小程序中post方法与get方法的封装
Sep 26 Javascript
countUp.js实现数字滚动效果
Oct 18 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 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
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
php cli配置文件问题分析
2015/10/15 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
tensorflow实现KNN识别MNIST
2018/03/12 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
python多线程下信号处理程序示例
2019/05/31 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
几个Shell Script面试题
2014/04/18 面试题
教师求职推荐信范文
2013/11/20 职场文书
化工专业推荐信范文
2013/11/28 职场文书
大学校庆策划书
2014/01/31 职场文书
关于安全的演讲稿
2014/05/09 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
统计学教授推荐信
2014/09/18 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android