文字列 lengthプロパティの使い方
文字列におけるlengthプロパティは、文字列に含まれている文字数を数値で表します。
空文字列のlengthは0です。
構文
string.length
ここでstringは、長さを取得したい対象の文字列を指します。
例
let x = "Hello";
console.log(x.length); // 5
let strJP = "コーディングエブリバディ";
console.log(strJP.length); // 12
let emptyStr = ""; // 空の文字列
console.log(emptyStr.length); // 0
/* lengthプロパティの値には「空白文字(スペース)」も含まれます。 */
let str = "Hello World";
console.log(str.length); // 11 ("Hello" 5 + " " 1 + "World" 5)
let spaces = " "; // 3つの空白文字
console.log(spaces.length); // 3
注意点
文字列において length プロパティは、次の2つの点に注意する必要があります。
文字列に絵文字が含まれている場合
文字の実際の総数が length プロパティの示す数値と一致しない場合があります。
JavaScriptは文字列の長さ(インデックス)を計算する際、**UTF-16コードユニット(Code Unit)**を基準にします。
JavaScriptの文字列の length プロパティは、文字列に含まれるコードユニット(code unit)の数です。ここでコードユニットとは、UTF-16エンコーディングで使用される16ビット単位を指します。
一般的な英文字や日本語は1つのコードユニットで表現されますが、「UTF-16コードユニット」1つで表現できない絵文字(例:😃, 🎉, ❤️)などは、2つのコードユニットで構成された**サロゲートペア(Surrogate Pair)**を使用します。このような場合、該当する文字の length は 2 になります。
- UTF-16コードユニット(Code Unit)
- JavaScriptは文字列の長さ(インデックス)を計算する際、「UTF-16コードユニット」を基準にします。
UTF-16におけるコードユニットとは、文字列を内部的に保存・処理するために使用される16ビット(2バイト)単位の領域を意味します。JavaScriptの文字列のlength値は、このコードユニットの個数を表します。英文字、数字、および一般的なハングル(または日本語の文字)は1つの「UTF-16コードユニット」で表現されるため、文字列の長さやインデックスにおいてもそれぞれ 1 として計算されます。
一方、「UTF-16コードユニット」1つで表現できない絵文字などは、2つのコードユニットをペアとして組み合わせ、1つの文字として処理されます。このような2つのコードユニットの組み合わせを「サロゲートペア(Surrogate Pair)」と呼びます。
例を挙げて説明します。
let str = "a"; // 単一のコードユニット
console.log(str.length); // 1
let japanese = "あ"; // 単一のコードユニット
console.log(japanese.length); // 1
let emoji = "😊"; // 2つのコードユニットで表現される <== 注意点
console.log(emoji.length); // 2
したがって、length は文字列内のコードユニットの個数を表すのは確かですが、コードユニットが必ずしも1つの文字と一致するわけではないという点を理解することが重要です。
絵文字(😊)に関しては、HTMLによる絵文字(emoji)の使い方を参考にしてください。
読み取り専用であり、直接変更することはできません。
JavaScriptの文字列のlengthプロパティは読み取り専用のプロパティであり、この値を直接変更することはできません。
次は、lengthプロパティが読み取り専用のプロパティであることを示す簡単な例です。
let str = "Hello, World!";
console.log(str.length); // 13
// lengthプロパティの変更を試行
str.length = 5;
console.log(str.length); // 依然として 13
console.log(str); // "Hello, World!" のまま維持される
この例は、lengthプロパティが読み取り専用であることを示しています。lengthの値を変更しようとしても、JavaScriptはそれを無視し、元の値を保持します。
互換性
| プロパティ |
デスクトップ Chrome
|
デスクトップデスクトップ Edge
|
デスクトップ Firefox
|
Safari
|
Node.js
|
|---|---|---|---|---|---|
length
|
1 | 12 | 1 | 1 | 0.10 |
仕様書
| 仕様書 | |
|---|---|
length
|
ECMAScript® 2026 Language Specification #sec-properties-of-string-instances-length |