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 相关文章推荐
兼容IE与firefox火狐的回车事件(js与jquery)
Oct 20 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
Nov 19 Javascript
js window.print实现打印特定控件或内容
Sep 16 Javascript
CSS3实现动态背景登录框的代码
Jul 28 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
Sep 06 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
Oct 23 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
jQuery 调用WebService 实例讲解
Jun 28 Javascript
AngularJS 工作原理详解
Aug 18 Javascript
Angular实现下载安装包的功能代码分享
Sep 05 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 Javascript
JS实现购物车基本功能
Nov 08 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数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
JSONP基础知识详解
2017/03/19 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
Python3实现的简单三级菜单功能示例
2019/03/12 Python
python+tkinter实现学生管理系统
2019/08/20 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
如何撰写岗位职责
2014/02/01 职场文书
计算机专业自荐信
2014/05/24 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android