ワイズリマインダー

今更ながらJavaScriptのdelete演算子の話

メモリを解放するのに良くこの様なコードを見かけます

// ×
hoge = null;
// ○
delete hoge;

正解ですw

この延長で次の様なコードを書いたらメモリ解放されなかった

var hoge = "a";

// stringが出力される
console.log(typeof hoge);

delete hoge;

// undefineではなくstringが出力される
console.log(typeof hoge);

// 普通にaが出力される
alert(hoge);

どうやら、varで宣言した変数では使用できないらしい
(オブジェクトプロパティのみ)

ついでに言うと、JavaScriptのオブジェクトは参照渡しなので

 var master = ['a', 'b', 'c'];
var temp = master;
delete temp[1];

// 'a', 'c'が出力される(納得)
console.log(temp);

// 'a', 'c'が出力される(参照なので)
console.log(master);

と言う事になるのでご注意を

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください