大家都知道在JS的世界里, 0、-0、null、""、false、undefined 或 NaN,這些都可以自動轉化為布爾的 false,那么字符串的"false"是不是false呢,答案是否定的,if("false") 來判斷的話,是等於true
var hasAuth = 'true';
if(hasAuth){
//此時的hasAuth是true
}
var hasAuth = 'false';
if(hasAuth){
//此時的hasAuth是true
}
“false”的布爾值是true,那么怎么把false的字符串變成false的布爾值呢?
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");
最后我以下的代碼轉換 "false"字符串
var value = "false";
var flag = value ==="false" ? false : true;