string.charCodeAt(n) < 256
という条件文と遭遇し、前後の文脈から「半角英数文字か否かの判断をしているのだろう」と推測したものの、具体的に何をどう判定しているのか分からなかったので調べた。
.charCodeAt(n)メソッド
指定位置のUnicodeコードポイント(10進数)を返す
String.prototype.charCodeAt() - JavaScript | MDN
そもそもUnicodeとは
- 文字コード規格のひとつ。
- 文字コードは文字集合と符号化(エンコード)方式から成る。
- Unicodeは文字集合にあたる。
- Unicode用の符号化方式としてUTF-8などが存在する。
- 多言語対応。文字種毎にブロックが分けられている。
- コードポイントは「U+」 の後に十六進法で表す
Unicodeについて
文字コードの考え方から理解するUnicodeとUTF-8の違い
Unicodeコードポイント < 256 の意味
256未満つまり255=0xFF以下ということで、UnicodeコードポイントU+0000~U+00FFの範囲に相当。
上記の表を見ると、半角英数も含まれているが、それ以外の記号・制御文字・英語以外の言語の文字も含まれていることが分かる。
ブロックとしては0000~007Fが基本ラテン文字、0080~00FFがラテン1補助に相当。ラテン文字はこのほかに拡張A/Bブロックもあるので、< 256は
ざっくりラテン文字か否かを判断していることに…。ざっくり過ぎる…。
文字判定は正規表現かきっちり指定が分かりやすい
ゆるふわ範囲指定は今回のように意図がブレて混乱が生じるので、例えば英数のみなら正規表現[a-zA-Z0-9]でチェックする方が何をしているか分かりやすい。
もしくはUnicodeコードポイントでも0031〜0039,0041〜005A,0061〜007Aのようにきっちり範囲指定するか。