若手IT勉強会 サイ本読書会 第4章〜第6章

読んだり喋ったりして気になったこととかを掻い摘んで

第4章 変数

4.2 変数の宣言

var文で宣言された変数はdelete演算子で削除しようとするとエラーになると書かれているが、
グローバル変数の場合は普通に削除できる(windowオブジェクトのプロパティだから当然?)

(function(){
	var a=1;
	console.info(a);
	delete a;
	console.info(a);//1
})();
var a=2;
console.info(a);
delete a;
console.info(a);//ReferenceError: a is not defined

第5章 式と演算子

5.4.1 等値演算子(==)と同値演算子(===)

==演算子でどちらか一方がtrueの時には1に変換、falseの時には0に変換する。
なので「someValue」と「someValue == true」を条件節に入れた場合に同じになるとは限らない。

5.8 ビット演算子

使いどころってあるの?
ビット否定演算子(~)については-1をビット反転すると0になるから、
含む場合:「hoge.indexOf(fuga)!=-1」は「~hoge.indexOf(fuga)」
含まない場合:「hoge.indexOf(fuga)==-1」は「!~hoge.indexOf(fuga)」
というように書けるtipsがあるよ、と紹介。
http://mayokara.info/note/view/329

第6章 文

6.14 function文
6.16 throw文

Errorオブジェクトだけじゃなくて、他のオブジェクトや、基本型すらthrowできる。
Errorオブジェクト以外を投げるというテクニックはPrototype.jsのEnumerableで、
イテレータからループからbreak文で抜けるように脱出する際に使われているよ、と紹介。
第2回 Prototypeライブラリ(198~639行目):prototype.jsを読み解く|gihyo.jp … 技術評論社

6.17 try/catch/finally文

関数の中で、DOM要素のreturnをtry句の中に入れ、
finally句の中でDOM要素が代入されていたローカル変数にnullを代入して、
IE6のメモリリークバグを回避するというtipsがあるよ、と紹介。
http://www.hedgerwow.com/360/dhtml/ie6_memory_leak_fix/