タグ

ブックマーク / zenn.dev/sosukesuzuki (1)

  • JavaScript で文字数を length で数えるのはやめようの実例

    はじめに JavaScript において文字数を String の length で取得すると、期待した値が得られないことがある。この記事では、実際に String の length を使うことによって発生した Prettier のバグを紹介する。 前提 JavaScript の String には length というプロパティが存在する。このlengthプロパティは文字列の文字数を表すものではない。 実際には、文字列中に含まれるUTF-16のコードユニットの数を返す。つまり、ASCIIをはじめとしたBMPに含まれるものであれば我々の期待する文字数が返ってくるが、一部の漢字やemojiなどについてはそうはならない。 たとえば、漢字の𠮟(U+20B9F)はサロゲートペアであり、2つのコードユニットで表される。そのため、length は 2 になる。

    JavaScript で文字数を length で数えるのはやめようの実例
    ginpei
    ginpei 2021/08/04
    str.lengthが直感に反する値を返す例。Prettierの改行処理で、叱(U+53F1)は1文字、𠮟(U+20B9F)は2文字分とするため同じに見えるコードへの適用結果が異なる。
  • 1