小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

JavaScriptでの文字列の型とは

JavaScriptのデータ型は、数値、論理値、文字列、オブジェクトの4種類があります。
数値と論理値は、基本型と呼ばれています。
オブジェクトは、参照型と呼ばれています。
基本型は、代入、引数引渡し、比較、すべて値で行います。
参照型は、代入、引数引渡し、比較、すべて参照で行います。


では、文字列は、基本型でしょうか、それとも参照型でしょうか?
たぶん、C言語系の人は参照型、Perl系の人は基本型だと思うのでしょう…。


答えは、基本型です。


文字列は、代入、引数引渡し、比較、すべて値で行います。
ただし、JavaScriptでは、文字列の中身自体が変更できない仕様なので、厳密には基本型なのか参照型なのかわかりません。
とにかく、振る舞いとしては基本型で、特に比較は参照でなく値で行うのは確かです。

// 文字列型の場合
var xxx = "ABC";     // 値が代入される

if (xxx == "ABC") {  // 値で比較される
    alert(xxx);      // ABCと表示
    yyy(xxx);        // 値渡し
    alert(xxx);      // ABCと表示
}

function yyy (xxx) { // 値渡し
   xxx = "XYZ";
}

// オブジェクト型(配列)の場合
var aaa = ["ABC"];   // 参照が代入される
var ccc = aaa;

if (aaa == ccc) {    // 参照で比較される
    alert(aaa[0]);   // ABCと表示
    bbb(aaa);        // 参照渡し
    alert(aaa[0]);   // XYZと表示
}

function bbb (aaa) { // 参照渡し
   aaa[0] = "XYZ";
}