配列が空であることを確認したい時、
var a=[];
if(a === []){...}
と書くと間違い。
参考に、下のサイトをちぇっく。
http://d.hatena.ne.jp/reosablo/20090519/1242723949
要するに、
[]は配列、配列はオブジェクト、だから基本的にtrue。
でもif([] ===...
のようにif文章の左辺で使われるときは、[配列]は[配列].toStringと見なされる。
(配列のtoStringメソッドはDavid FlanaganのJavaScript第5版121ページ参照。)
例えば、
var a=[];
if(a){} //true
if(a==true){} //false
var b=[1];
if(b==true){} //true
var c=[2];
if(c==true){} //false
のようになる。bのプロセスを説明すると、
var c=[1,2];
if(c==true){} //false
var d=[{'num':1};
if(d==true){} //false
となることに要注意。
0 件のコメント:
コメントを投稿