首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么angular.lowercase方法使用'bitwise-or 32‘将'A’转换为'a'?为什么不使用'+ 32'?

为什么angular.lowercase方法使用'bitwise-or 32‘将'A’转换为'a'?为什么不使用'+ 32'?
EN

Stack Overflow用户
提问于 2017-08-04 09:37:13
回答 1查看 24关注 0票数 1
代码语言:javascript
复制
    var manualLowercase = function(s) {
      return isString(s)
          ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})
          : s;
    };
    var manualUppercase = function(s) {
      return isString(s)
          ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
          : s;
    };


    // String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish
    // locale, for this reason we need to detect this case and redefine lowercase/uppercase methods
    // with correct but slower alternatives. See https://github.com/angular/angular.js/issues/11387
    if ('i' !== 'I'.toLowerCase()) {
      lowercase = manualLowercase;
      uppercase = manualUppercase;
    }

上面是angular代码。为什么使用'ch.charCodeAt(0) | 32‘将'A’转换为'a'?为什么不是'ch.charCodeAt(0) + 32‘呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-04 09:40:40

因为32恰好是2的幂,所以如果c & 32 === 0 (即c在32的位置上有0),则c | 32等同于c + 32。逐位运算通常比加法略快,因为计算机可以同时计算所有位,而不必链接进位。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45496982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档