スタッフブログ
haltです。
最近JavaScriptの勉強を真面目にやる事にしました。
いつまでも知ったかぶりで必要になった時にその場しのぎのコードを書くより
ちゃんと理解して自分から積極的に使えるようになった方が良いですし。
そこでオライリー本を読みすすめているのですが、
文法的にPHPとそっくりのJavaScriptが配列の扱いに関しては
全然違う事がわかったので紹介します。
以下のPHPコードを見てください。
これは当然a,b,cが入った配列が表示されます。
しかし、同じ事をやっているJavaScriptの以下のコードは
x,b,cが表示されます。
PHPの場合、配列は「データ型」であるため、代入すると値がコピーされます。
しかしJavaScriptの場合、配列は、「配列オブジェクト」である為、
PHPのクラスのインスタンスを代入した時のように、参照扱いになります。
その為、参照先のbの変更がaに反映されるのです。
説明を読めば「ああなるほど」という感じですが、知らないでテキトーに使っていると
ハマるのではないでしょうか。
<?php
$a = array('a', 'b', 'c');
$b = $a;
$b[0] = 'x';
var_dump($a);
var a = ['a', 'b', 'c'];
var b = a;
b[0] = 'x';
alert(a);