为什么当结果应该相同时却得到不同的结果?
let isPasswordValid = password => {
if (!password.length <= 7) {
return true;
}
};
console.log(isPasswordValid("rondellallard")); //true
console.log(isPasswordValid("passwordwfwfw")); //true
console.log(isPasswordValid("ronde")); //true
console.log(isPasswordValid("rondelltgh")); //true
console.log(isPasswordValid("ronde42425")); //true
//代码页2
let isPasswordValid = password => {
if (password.length >= 7) {
return true;
}
};
console.log(isPasswordValid("rondellallard")); //true
console.log(isPasswordValid("passwordwfwfw")); //true
console.log(isPasswordValid("ronde")); //undefined
console.log(isPasswordValid("rondelltgh")); //true
console.log(isPasswordValid("ronde42425")); //true
当我反转大于和小于符号时,我相信我仍然应该得到相同的值。不管怎样,当我这样做时,这并不是我得到的结果。在这个例子中总是应该是未定义的第三个值在第一个例子中却变成了 tre,我不明白为什么。
最佳答案
因为操作顺序在这里很重要(由 operator precedence 定义)。使用您的第一个 if 语句:
if(!password.length <= 7)
您的password.length
由于 !
被转换为 boolean 值运算符(operator)。然后,由于该 boolean 值在不等式的上下文中使用,因此它将转换为数字,其中 true
变成1
和false
变成0
。所以,你的if
条件将始终评估为 true
如0/1 <= 7
.
但是在第二个 if 语句中,
if (password.length >= 7) {
你实际上是在检查字符串的长度。您的函数将 return true
如果您的密码长度为 7 或更长。但是,您还没有定义如果不是这种情况它应该做什么,因此默认情况下,您的函数将返回 undefined
隐式地。
关于javascript - 为什么我得到不同的 boolean 结果,而它们应该是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59942828/