JavaScript:在比较字符时使用charCode有什么好处?

时间:2016-09-28 08:13:51

标签: javascript performance

首先:我有点进入JavaScript,但并不多。

今天我看到了这些代码:

if (stringToSearch[i].charCodeAt(0) === codeToSearch) {

String的charCodeAt()方法用于比较当前char和搜索到的char。

此处函数的完整代码:



function getOccurences (stringToSearch, charToSearch) {
  var ret = 0;
  var codeToSearch = 0;
  var i;
  
  stringToSearch = stringToSearch.toUpperCase();
  codeToSearch = charToSearch.toUpperCase().charCodeAt(0);

  for (i = 0; i < stringToSearch.length; i++) {
    if (stringToSearch[i].charCodeAt(0) === codeToSearch) {
      ret++;
    }
  }
  
  return ret;
}
&#13;
&#13;
&#13;

我会直接比较这个字符。不使用charCodeAt()。

只是......

  stringToSearch[i] === charToSeach

据我所知,计算机无论如何只比较数字。将字符转换为UTF代码。相互减去这些数字,然后检查结果是否为零。

因此我的问题是:

charCodeAt()的用法是否有意义?

在字符比较中支持直接charCode比较是否有好处。

2 个答案:

答案 0 :(得分:2)

当我们必须增加/减少字符时,

charCode会受益 例如。如果我们在变量x中有charCode('a'),那么我们可以使用x ++增加它 但如果我们保存了“a”,那么我们就无法进行算术运算 因此,当您需要递增/递减字符时,将使用charCodeAt(number)

答案 1 :(得分:2)

我的直觉是当你经历类型转换和函数调用这样的箍时,会说 hit

也就是说,通过委托给本地字符串方法,您可能会从代码中获得更多性能,例如:

function countCaseInsensitiveOccurrences(haystack, char) {
  haystack = haystack.toUpperCase();
  char = char.toUpperCase()[0];
  var count = 0, pos = -1;
  while ((pos = haystack.indexOf(char, pos + 1)) !== -1) {
    count++;
  }
  return count;
}