私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

JavaScript 第5版 3.15 「値による」データ型操作と「参照による」データ型操作

下記の場合、「値による」手法と、「参照による」手法で結果が異なる。

// 下記は、「値による」のか? 「参照による」のか? ということ。
x = y;
obj.meth(x);
x == y;

では、JavaScriptではどうなのか。

3.15.1 基本型と参照型

基本データ型は基本型、オブジェクトは参照型。基本データ型の文字列を除けばJavaと同じ。

3.15.2 文字列は「値による」のか「参照による」のか

文字列は、

    • 基本型と参照型のどちらにも分類できない性質を持っている。
    • 文字列は不変(immutable)
    • 文字列を変更することはできないから、「値による」のか「参照による」のか、どちらでもいい。

結論としては、文字列は基本データ型であり、オブジェクトではない。

3.15.3 文字列の比較

    • 文字列は値で比較される。
    • CやJavaとは異なる。

つまり、下記の比較方法でよい。

a = 'a';
b = 'b';
alert(a == b); // true

3.15.4 「値による」データ型の操作と「参照による」データ型操作のまとめ

文字列だけJavaと違う、と覚えればよい。