在JS的世界里, 0、-0、null、""、false、undefined 或 NaN,这些都可以自动转化为布尔的 false,那么字符串的"false"呢,if("false") 来判断的话,是等于true的。即:
Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(-0) // false
Boolean(’’) // false
Boolean(NaN) // false
对于如下:
Boolean(1) // true
Boolean(‘false’) // true
Boolean([]) // true
Boolean({}) // true
Boolean(function () {}) // true
Boolean(/foo/) // true
最终可以这样解决:
var isAuth == 'true' ;
if(Boolean(isAuth) === 'true') ; 结果为true
var isAuth == 'false' ;
if(Boolean(isAuth) === 'true') ; 结果为false
这篇博客探讨了JavaScript中将不同值转化为布尔类型时的规则,特别是`false`字符串在条件判断中的表现。文章指出,虽然0、-0、null、空字符串、NaN等会被自动转化为false,但字符串`'false'`在`if`语句中会被视为true。作者建议在比较时使用全等运算符以避免此类误解,例如`Boolean(isAuth) === 'true'`。此外,还列举了一些其他会转换为true的值,如非空字符串、数组、对象等。
611

被折叠的 条评论
为什么被折叠?



