我在moment.js内找到了这段代码。我们为什么要进行这种检查?
if (locale === true || locale === false) {
strict = locale;
locale = undefined;
}
答案 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。