大家都知道在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
当然也可以如下玩
String.prototype.bool = function() {
return (/^true$/i).test(this);
};
console.log("true".bool());
以上这篇JS字符串false转boolean的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]