>>222
replaceなどの結果がキャッシュされるような仕様はないが
別にキャッシュしても仕様に違反しない
JSは仕様と実装が完全に切り離されているのでそういう部分は実装次第

別解が知りたいというけど問題が単純すぎるのでアルゴリズム的別解はない
文字を文字として見てテーブルで変換するか、
文字コードとして見て演算するかくらいしかない
だから単純にJSの基本、アルゴリズムの勉強問題として見れば問題ない
だけど良いコードパターンで書けてるかというと違う

それが今回の例で実際に問題になるかは置いといて
文字列を変換するときの一般的な良いパターンとして

まずサロゲートペアを意識すること
つまりcharCodeAtなどではなくcodePointAtを使う
もしくはfor-ofで文字を取り出す

そしてマジックナンバーは使わない
コードに突然0xなんちゃらと現れても大抵の人はそれが何を示しているのか分からない
だから”A”の文字コードは事前に'A'.codePointAt()などで求めておいて定数に格納しておく