gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:17:46 27 4
gpt4 key购买 nike

    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”?

最佳答案

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

关于javascript - 为什么 angular.lowercase 方法使用 'bitwise-or 32' 将 'A' 转换为 'a' ?为什么不使用 '+ 32' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45496982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com