如何快速、高效的將「false」轉換爲false

問題提出

背景: 從cookie中讀的鍵值爲'false',當把字符串做爲判斷條件時,問題就來了javascript

在JS的世界裏, 0、-0、null、""、false、undefined 或 NaN,這些均可以自動轉化爲布爾的 false,那麼字符串的"false"卻不等於false呢,if("false") 來判斷的話,是等於true的。java

根據W3C的解釋:segmentfault

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");

複製代碼

所以,若是從cookie或者後臺返回數據爲字符串的'false'時,是不能直接做爲判斷條件的。後端

解決方案

  • 三目運算符轉換
let bool = result === 'false' ? false : true
複製代碼
  • 索引
let bool = {
    'true': true,
    'false': false
};
bool[ v ] !== undefined ? bool[ v ] : false;
複製代碼
  • JSON.parese

這個應該是最方便、簡潔的方法了cookie

JSON.parse('false')  // false
JSON.parse('true') //true
複製代碼
  • 後端配合 ,不要使用字符串的'ture'後者'false',使用0,1代替
let target = '0'
let bool = !!+target
複製代碼

【討論向】這是目前找到的較好的解決方案,若是有更好、更優雅的方式,歡迎貼過來ui

參考資料

鏈接地址spa

相關文章
相關標籤/搜索