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 相关文章推荐
Js中sort()方法的用法
Nov 04 Javascript
js 变量类型转换常用函数与代码[比较全]
Dec 01 Javascript
jquery实现鼠标滑过小图查看大图的方法
Jul 20 Javascript
JavaScript截取、切割字符串的技巧
Jan 07 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
JS出现失效的情况总结
Jan 20 Javascript
JS实现图片预加载之无序预加载功能代码
May 12 Javascript
JS简单实现自定义右键菜单实例
May 31 Javascript
基于JavaScript实现表格滚动分页
Nov 22 Javascript
解决layui 复选框等内置控件不显示的问题
Aug 14 Javascript
Node.js之readline模块的使用详解
Mar 25 Javascript
JS前端基于canvas给图片添加水印
Nov 11 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中函数内引用全局变量的方法
2008/10/20 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
javascript 多浏览器 事件大全
2010/03/23 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
python版大富翁源代码分享
2018/11/19 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
Python socket服务常用操作代码实例
2020/06/22 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
python能做哪些生活有趣的事情
2020/09/09 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
泰国网上购物:Shopee泰国
2018/09/14 全球购物
介绍一下Ruby的特点
2013/01/20 面试题
医药工作者的求职信范文
2013/09/21 职场文书
自主招生自荐信
2013/12/08 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
2015年酒店工作总结
2015/04/28 职场文书
陪护人员误工证明
2015/06/24 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技