Javascript逻辑运算(a === true || a === false)

时间:2018-01-15 07:11:25

标签: javascript momentjs

我在moment.js内找到了这段代码。我们为什么要进行这种检查?

if (locale === true || locale === false) {
    strict = locale;
    locale = undefined;
}

4 个答案:

答案 0 :(得分:8)

这用于确保locale仅用作strict变量/参数(如果它实际上是布尔值)。看看那段代码,根据是否指定了可选的代码,它看起来可能会改变函数参数。 (在这种情况下,locale将是strict之前的可选项。)

答案 1 :(得分:3)

它检查 locale 是否完全 true false 而不是任何其他虚假( undefined > null ,'', NaN ,0)或truthy值

答案 2 :(得分:0)

也许我不了解你的背景。但是,基于代码,我认为他们想检查locale的值是一个布尔值。

if (locale === true || locale === false) {...}

所以你可以看到他们使用三等于检查(语言环境可能属于另一种类型)。

答案 3 :(得分:0)

" =="意味着价值相等而不是类型,而" ==="意味着价值和类型相等。

var x = 7;

x == "7" // returns true

x === "7" // returns false as x is not a string

x === 7 // returns true as they are both equal in value and type

对于您提供的代码,看起来它正在检查locale的值和类型是否为布尔值,这就是为什么使用三等于比较以及为什么它包含true和false。