在Javascript中将String转换为Boolean

时间:2017-02-14 00:42:45

标签: javascript string types casting boolean

在Javascript中,两者之间有什么区别 if(!!isLoaded)if(Boolean(isLoaded))

我最近开始开发一个应用程序,其中前一个开发人员做了很多。

我跑了几个测试,他们似乎都转换了字符串" true"和"假"到布尔类型,我假设是这样做的主要原因。

如果它们确实相同,那么每个人对哪一个更具可读性的看法是什么?

3 个答案:

答案 0 :(得分:2)

if (!!isLoaded)if (Boolean(isLoaded))都等同于if (isLoaded),因为JavaScript只查找if条件的真值。如果您需要特定字符串"true""false",则需要直接与if (isLoaded === "true")进行比较。

答案 1 :(得分:0)

我个人认为!!更容易阅读。它们都转换为布尔值。

然而,像jaromeda提到的那样都不会适用于这种情况。两个字符串" true"和"假"因为值存在,所以结果为真。

答案 2 :(得分:0)

空字符串在JS中已被视为否定条件,确实......

以下内容在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);