国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

JS字符串false轉(zhuǎn)boolean的方法(推薦)

2019-11-19 17:16:03
字體:
供稿:網(wǎng)友

大家都知道在JS的世界里, 0、-0、null、""、false、undefined 或 NaN,這些都可以自動(dòng)轉(zhuǎn)化為布爾的 false,那么字符串的"false"是不是false呢,答案是否定的,if("false") 來判斷的話,是等于true的

所以今天遇到個(gè)SB問題,就是后臺(tái)velocity往前臺(tái)傳參,大家一般都是這么寫。

0.背景

var hasAuth = $!auth ; // 這個(gè)auth就是利用velocity傳到前臺(tái)的

這么寫就有一個(gè)風(fēng)險(xiǎn),那就是,如果后臺(tái)忘記往前臺(tái)傳這個(gè)參數(shù),就造成了如下的

var hasAuth = ; // 語(yǔ)法錯(cuò)誤,因?yàn)椋恢笆莻€(gè)空,這是由于velocity木有傳參,前臺(tái)是自然而然的變成了空白,空白!!

1、解決1

那么如何解決這種因?yàn)榍昂蠖瞬环蛛x,velocity忘記傳到前臺(tái)而產(chǎn)生的這個(gè)問題呢,當(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

然而事情并沒有到此結(jié)束,因?yàn)槲野l(fā)現(xiàn)如果后臺(tái)沒有忘記往前臺(tái)傳參,后臺(tái)獲得的權(quán)限絕逼不是true就是false,那么問題來了,代碼經(jīng)過渲染變成了下面這個(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了?我特么太聰明了,于是這么寫

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)的是falsevar 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最終等于truevar myBoolean=new Boolean("Bill Gates");

靠了,這條路也想不通,可愛的一休哥,趕緊想想注意啊!

5、解決5 最終解決方案

靈機(jī)一動(dòng),哇塞,那么我用字符串去對(duì)比字符串總可以了吧?

于是最終的檢測(cè)方法如下

var hasAuth = '$!auth' === 'true' ;1.$!auth 為 true 時(shí)var hasAuth = 'true' === 'true' ;console.log(hasAuth);//true2.$!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è)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 四会市| 岳西县| 广平县| 邢台市| 昌图县| 山西省| 卢氏县| 谷城县| 兴和县| 延安市| 宜川县| 含山县| 裕民县| 林西县| 沈丘县| 乐都县| 宜章县| 甘泉县| 贵阳市| 屏东市| 鞍山市| 乌拉特中旗| 桐柏县| 汤阴县| 鄱阳县| 深州市| 安塞县| 缙云县| 陕西省| 五河县| 三穗县| 义马市| 永平县| 嘉定区| 雷山县| 德格县| 重庆市| 兴隆县| 房山区| 博乐市| 浦北县|