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.timer插件实现一个计时器
Apr 25 Javascript
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
Apr 27 Javascript
jQuery监控文本框事件并作相应处理的方法
Apr 16 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
Jan 26 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
Nov 07 Javascript
js仿京东轮播效果 选项卡套选项卡使用
Jan 12 Javascript
基于jquery实现左右上下移动效果
May 02 jQuery
傻瓜式vuex语法糖kiss-vuex整理
Dec 21 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
Feb 27 Javascript
vue-cli和v-charts实现可视化图表过程解析
Oct 08 Javascript
VUE 实现element upload上传图片到阿里云
Aug 12 Javascript
微信小程序实现文件预览
Oct 22 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添加MySQL数据记录代码
2008/06/07 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
jquery中的$(document).ready()与window.onload的区别
2009/11/18 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
javascript实现连续赋值
2015/08/10 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
2020/10/13 Javascript
python求列表交集的方法汇总
2014/11/10 Python
Python输出9*9乘法表的方法
2015/05/25 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
Python线程指南分享
2019/11/19 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
送给程序员的20个Java集合面试问题
2014/08/06 面试题
个人找工作求职简历的自我评价
2013/10/20 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
手机被没收的检讨书
2014/10/04 职场文书
小学教师求职信范文
2015/03/20 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server