调用布尔值 vs. 不等于 -1

Calling a boolean vs. not equal to -1

提问人:altbanky 提问时间:9/18/2020 更新时间:9/18/2020 访问量:29

问:

我正在开发一个从相应的前缀(如 www、.com 等)获取域名的函数,并且对将我的别名称为 true 和将别名称为不等于 -1 有什么区别感到有点困惑。

从技术角度来看,有人可以帮我理解为什么不等于 -1 的方法有效,而不是仅仅将别名称为 true?(我可能正在屠杀这个问题,所以请纠正我的语言使用)

我最初是从这个开始的,但它没有用。

function getDomain(url) {

  //create result
  let result = '';

  let searchWWW = 'www.';
  let searchHTTP = 'http://';
  let searchHTTPS = 'https://';

  let searchDOT = '.';
  let searchCOM = '.com';
  let searchCO = '.co';
  let searchRU = '.r';

  let indexOfStart = url.indexOf(searchWWW);
  let indexOfStartHTTP = url.indexOf(searchHTTP);
  let indexOfStartHTTPS = url.indexOf(searchHTTPS);
  let indexOfEnd = url.indexOf(searchCOM);
  let indexOfEndDot = url.indexOf(searchDOT);


  // if www 
  if (indexOfStart) {
    //slice from www to dot
    result += url.slice(indexOfStart + 4, url.indexOf(searchDOT, (indexOfEndDot + 1)));
    //if no www and no https
  } else if (!indexOfStartHTTPS) {
    //slice from https to dot
    result += url.slice(indexOfStartHTTPS + 8, indexOfEndDot);
  } else {
    result += url.slice(indexOfStartHTTP + 7, indexOfEndDot);
  }
  //return result
  return result;
}

另一方面,这确实奏效了。

  //create result
  let result = '';

  let searchWWW = 'www.';
  let searchHTTP = 'http://';
  let searchHTTPS = 'https://';

  let searchDOT = '.';
  let searchCOM = '.com';
  let searchCO = '.co';
  let searchRU = '.r';

  let indexOfStart = url.indexOf(searchWWW);
  let indexOfStartHTTP = url.indexOf(searchHTTP);
  let indexOfStartHTTPS = url.indexOf(searchHTTPS);
  let indexOfEnd = url.indexOf(searchCOM);
  let indexOfEndDot = url.indexOf(searchDOT);


  // if www 
  if (indexOfStart !== -1) {
    //slice from www to dot
    result += url.slice(indexOfStart + 4, url.indexOf(searchDOT, (indexOfEndDot + 1)));
    //if no www and no https
  } else if (!indexOfStartHTTPS) {
    //slice from http/https to dot
    result += url.slice(indexOfStartHTTPS + 8, indexOfEndDot);
  } else {
    result += url.slice(indexOfStartHTTP + 7, indexOfEndDot);
  }
  //return result
  return result;
}

感谢您的帮助,期待获得更好的理解。

JavaScript 布尔值逻辑

评论

2赞 Taplar 9/18/2020
除 0 外的所有数字都是真实的。 是一个真实的数字。因此,将其从 just 更改为 会更改它何时进入或不进入该 if 语句的行为-1if (thatVariable)if (thatVariable !== -1)
2赞 pilchard 9/18/2020
更重要的是,当找不到搜索字符串时返回 -1,因此具体地测试它最有意义indexOf()
0赞 altbanky 9/18/2020
感谢您的澄清,这两点都使这一点更加清晰。我没有考虑 truthy 会改变行为的事实,测试 indexOf() -1 本机功能最有意义。

答: 暂无答案