大家都知道在JS的世界里,0,0,null, ",假的,未定义或南,这些都可以自动转化为布尔的假,那么字符串的“假”是不是假呢,答案是否定的,如果(“false”)来判断的话,是等于真正的
所以今天遇到个某人问题,就是后台速度往前台传参,大家一般都是这么写。
var hasAuth=$ !身份验证;//这个身份验证就是利用速度传到前台的
这么写就有一个风险,那就是,如果后台忘记往前台传这个参数,就造成了如下的
var hasAuth=;//语法错误,因为;之前是个空,这是由于速度木有传参,前台是自然而然的变成了空白,空白! !
那么如何解决这种因为前后端不分离,速度忘记传到前台而产生的这个问题呢,当当当当,我想到了一个办法就是利用单引号将变量括住,这样后台不传参,我也不怕不怕啦,代码变成了这样
var hasAuth='美元!身份验证的;//这样就好啦,即使后台不传参到前台,我特么也不怕报语法错误了。
然而事情并没有到此结束,因为我发现如果后台没有忘记往前台传参,后台获得的权限绝逼不是真实的就是假的,那么问题来了,代码经过渲染变成了下面这个样纸。
var hasAuth=罢嬲摹? 或者 var hasAuth='假'; >之前那么下面再做判断的时候呢
1. var hasAuth=罢嬲摹? 如果(hasAuth){//此时的hasAuth是正确的 } 2. var hasAuth='假'; 如果(hasAuth){//此时的hasAuth还是正确的 } >之前日了狗了,这该如何是好! ! !
我特么灵机一动,那么我用布尔的构造方法去做处理岂不是就好了吗?我特么太聪明了,于是这么写
var hasAuth=布尔(美元! auth);
还是和刚才一样
1 .当后台传到前台的身份验证是真实时,布尔(美元! auth)===Boolean('真的')===true; var hasAuth=罢嬲摹? 如果(hasAuth){//此时的hasAuth是正确的 } 2 .当后台传到前台的身份验证是假时,布尔(美元! auth)===Boolean('假')===true; var hasAuth='假'; 如果(hasAuth){//此时的hasAuth还是正确的 } >之前日了狗了,为咩啊
我查阅了一下w3c,发现解释如下
var myBoolean=new Boolean ();//下面的所有的代码行均会创建初始值为假的布尔对象。 var myBoolean=new Boolean (); var myBoolean=新布尔(0); var myBoolean=new布尔(空); var myBoolean=new布尔(" "); var myBoolean=new布尔(假);//不带单引号的是假的 var myBoolean=new布尔(南);//下面的所有的代码行均会创初始值为true的布尔对象: var myBoolean=新布尔(1); var myBoolean=new布尔(真正的); var myBoolean=new布尔(“true”); var myBoolean=new布尔(“false”);//带单引号的字符串假最终等于事实 var myBoolean=new布尔(“比尔盖茨”); >之前靠了,这条路也想不通,可爱的一休哥,赶紧想想注意啊!
灵机一动,哇塞,那么我用字符串去对比字符串总可以了吧?
于是最终的检测方法如下
var hasAuth='美元!auth '===' true '; 1 .美元!身份验证为真时 var hasAuth='真的'===罢嬲摹? console.log (hasAuth);//真实的 2 .美元!身份验证为假时 var hasAuth='假'===罢嬲摹? console.log (hasAuth);//假的 >之前
当然也可以如下玩
String.prototype。bool=function () {
,,返回(/^真正的美元/i) test ();
};
console.log(“真正的”.bool ());
以上这篇JS字符串假转布尔的方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
JS字符串假转布尔的方法(推荐)