javascript - 为什么我得到不同的 boolean 结果,而它们应该是相同的?

标签 javascript boolean

为什么当结果应该相同时却得到不同的结果?

    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变成1false变成0 。所以,你的if条件将始终评估为 true0/1 <= 7 .

但是在第二个 if 语句中,

if (password.length >= 7) {

你实际上是在检查字符串的长度。您的函数将 return true如果您的密码长度为 7 或更长。但是,您还没有定义如果不是这种情况它应该做什么,因此默认情况下,您的函数将返回 undefined隐式地。

关于javascript - 为什么我得到不同的 boolean 结果,而它们应该是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59942828/

相关文章:

javascript - jQuery(ajax)提交表单

javascript - onAuthStateChanged 更改 Firebase 3.0.0 后引用不会重新运行

delphi - 为什么delphi BoolToStr true表示为-1

math - boolean 代数文章/书

r - 将 TRUE 和 FALSE 更改为 Yes 和 No

javascript - 如何隐藏javascript中的段落?

javascript - 创建自定义 JavaScript 函数

javascript - Rails 设计 + omniauth-stripe-connect "Authorization code does not belong to you"

c - 快速 C 随机 boolean 生成器

java - 在新方法中使用 boolean 结果时出错 - 需要字符串,但找到 boolean 值