在Javascript中,两者之间有什么区别
if(!!isLoaded)
和if(Boolean(isLoaded))
?
我最近开始开发一个应用程序,其中前一个开发人员做了很多。
我跑了几个测试,他们似乎都转换了字符串" true"和"假"到布尔类型,我假设是这样做的主要原因。
如果它们确实相同,那么每个人对哪一个更具可读性的看法是什么?
答案 0 :(得分:2)
if (!!isLoaded)
和if (Boolean(isLoaded))
都等同于if (isLoaded)
,因为JavaScript只查找if
条件的真值。如果您需要特定字符串"true"
和"false"
,则需要直接与if (isLoaded === "true")
进行比较。
答案 1 :(得分:0)
我个人认为!!
更容易阅读。它们都转换为布尔值。
然而,像jaromeda提到的那样都不会适用于这种情况。两个字符串" true"和"假"因为值存在,所以结果为真。
答案 2 :(得分:0)
以下内容在JS中被视为否定条件:
0
const v = 0 ; (!v) && doSomething()
空字符串const v = '' ; (!v) && doSomething()
⬅⬅️请注意,因为您的问题是关于将字符串转换为布尔值。
false
const v = false ; (!v) && doSomething()
null
const v = null ; (!v) && doSomething()
undefined
const v = undefined ; (!v) && doSomething()
使用==
时,这5个值相等,而使用===
则不等于。
否则,v
被视为正面条件。
let zero = 0 ;
let falseVar = false;
console.log(` zero == falseVar ? `, zero == falseVar);
console.log(` zero === falseVar ? `, zero === falseVar);
let emptyString= ''
console.log(` zero == emptyString ? `, zero == emptyString);
console.log(` zero === emptyString ? `, zero === emptyString);