JS字符串false轉(zhuǎn)boolean的方法(推薦)
大家都知道在JS的世界里, 0、-0、null、""、false、undefined 或 NaN,這些都可以自動(dòng)轉(zhuǎn)化為布爾的 false,那么字符串的"false"是不是false呢,答案是否定的,if("false") 來(lái)判斷的話(huà),是等于true的
所以今天遇到個(gè)SB問(wèn)題,就是后臺(tái)velocity往前臺(tái)傳參,大家一般都是這么寫(xiě)。
0.背景
var hasAuth = $!auth ; // 這個(gè)auth就是利用velocity傳到前臺(tái)的
這么寫(xiě)就有一個(gè)風(fēng)險(xiǎn),那就是,如果后臺(tái)忘記往前臺(tái)傳這個(gè)參數(shù),就造成了如下的
var hasAuth = ; // 語(yǔ)法錯(cuò)誤,因?yàn)?;之前是個(gè)空,這是由于velocity木有傳參,前臺(tái)是自然而然的變成了空白,空白?。?/p>
1、解決1
那么如何解決這種因?yàn)榍昂蠖瞬环蛛x,velocity忘記傳到前臺(tái)而產(chǎn)生的這個(gè)問(wèn)題呢,當(dāng)當(dāng)當(dāng)當(dāng),我想到了一個(gè)辦法就是利用單引號(hào)將變量括住,這樣后臺(tái)不傳參,我也不怕不怕啦,代碼變成了這樣
var hasAuth = '$!auth' ; // 這樣就好啦,即使后臺(tái)不傳參到前臺(tái),我特么也不怕報(bào)語(yǔ)法錯(cuò)誤了。
2、解決2
然而事情并沒(méi)有到此結(jié)束,因?yàn)槲野l(fā)現(xiàn)如果后臺(tái)沒(méi)有忘記往前臺(tái)傳參,后臺(tái)獲得的權(quán)限絕逼不是true就是false,那么問(wèn)題來(lái)了,代碼經(jīng)過(guò)渲染變成了下面這個(gè)樣紙。
var hasAuth = 'true'; 或者 var hasAuth = 'false';
那么下面再做判斷的時(shí)候呢
1.
var hasAuth = 'true';
if(hasAuth){ //此時(shí)的hasAuth是true
}
2.
var hasAuth = 'false';
if(hasAuth){ //此時(shí)的hasAuth還是true
}
這該如何是好?。?!
3、解決3
我特么靈機(jī)一動(dòng),那么我用Boolean的構(gòu)造方法去做處理豈不是就ok了?我特么太聰明了,于是這么寫(xiě)
var hasAuth = Boolean('$!auth');
還是和剛才一樣
1.當(dāng)后臺(tái)傳到前臺(tái)的auth是true時(shí),Boolean('$!auth') === Boolean('true') === true;
var hasAuth = 'true';
if(hasAuth){ //此時(shí)的hasAuth是true
}
2.當(dāng)后臺(tái)傳到前臺(tái)的auth是false時(shí),Boolean('$!auth') === Boolean('false') === true;
var hasAuth = 'false';
if(hasAuth){ //此時(shí)的hasAuth還是true
}
為咩啊
4、解決4
我查閱了一下w3c,發(fā)現(xiàn)解釋如下
var myBoolean=new Boolean();
//下面的所有的代碼行均會(huì)創(chuàng)建初始值為 false 的 Boolean 對(duì)象。
var myBoolean=new Boolean();
var myBoolean=new Boolean(0);
var myBoolean=new Boolean(null);
var myBoolean=new Boolean("");
var myBoolean=new Boolean(false);//不帶單引號(hào)的是false
var myBoolean=new Boolean(NaN);
//下面的所有的代碼行均會(huì)創(chuàng)初始值為 true 的 Boolean 對(duì)象:
var myBoolean=new Boolean(1);
var myBoolean=new Boolean(true);
var myBoolean=new Boolean("true");
var myBoolean=new Boolean("false");//帶單引號(hào)的字符串false最終等于true
var myBoolean=new Boolean("Bill Gates");
靠了,這條路也想不通,可愛(ài)的一休哥,趕緊想想注意??!
5、解決5 最終解決方案
靈機(jī)一動(dòng),哇塞,那么我用字符串去對(duì)比字符串總可以了吧?
于是最終的檢測(cè)方法如下
var hasAuth = '$!auth' === 'true' ; 1.$!auth 為 true 時(shí) var hasAuth = 'true' === 'true' ; console.log(hasAuth);//true 2.$!auth 為 false 時(shí) var hasAuth = 'false' === 'true' ; console.log(hasAuth);//false

當(dāng)然也可以如下玩
String.prototype.bool = function() {
return (/^true$/i).test(this);
};
console.log("true".bool());
以上這篇JS字符串false轉(zhuǎn)boolean的方法(推薦)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
js獲取下拉列表框<option>中的value和text的值示例代碼
本篇文章主要是對(duì)js獲取下拉列表框<option>中的value和text的值示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01
判斷滾動(dòng)條滑到底部觸發(fā)事件(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇判斷滾動(dòng)條滑到底部觸發(fā)事件的實(shí)例講解。具有很好的參考價(jià)值。一起跟隨小編過(guò)來(lái)看看吧,希望對(duì)大家有所幫助2017-11-11
JavaScript檢測(cè)并限制復(fù)選框選中個(gè)數(shù)的方法
這篇文章主要介紹了JavaScript檢測(cè)并限制復(fù)選框選中個(gè)數(shù)的方法,涉及javascript針對(duì)復(fù)選框的判定與運(yùn)算相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-08-08
JS實(shí)現(xiàn)點(diǎn)擊復(fù)選框變更DIV顯示狀態(tài)的示例代碼
下面小編就為大家分享一篇JS實(shí)現(xiàn)點(diǎn)擊復(fù)選框變更DIV顯示狀態(tài)的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
Javascript實(shí)現(xiàn)倒計(jì)時(shí)時(shí)差效果
這篇文章主要為大家詳細(xì)介紹了Javascript實(shí)現(xiàn)倒計(jì)時(shí)時(shí)差效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
JavaScript Promise原理與實(shí)現(xiàn)刨析
首先呢,Promise是異步中比較重要的知識(shí)點(diǎn),學(xué)習(xí)的最好方法就是掌握它的基本原理。所以這一篇主要說(shuō)一下如何用JS來(lái)實(shí)現(xiàn)一個(gè)自己的promise2022-10-10

