値があるかどうかのチェック的なところでいつも迷うやつ。
undefined == null
は true
undefined == null
true
undefined != null
false
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQZLO3h7RuEv9Aqf7gD_ptFJ6qZO0C7jlFg19gR-2k-HKNTmzLDNVcTm9u6SIqydwsd3cWnRQBCa1fJGZcLutr2mYzTjYLv5QPqFNPDa4MohjEkDY83P7gyKxcwDMkiU42iSlgVVR0xJg/s1600/image.png)
0==null
0==undefined
は false
0 == null
false
0 == undefined
false
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMnu0Vuby4i7ZmKzp8vP55vSURfiogI-jbXXzHChyxhRimGl3H0Tr0i1o7-72bJRYFCMMR5ShNwl7jUb92cXeIEzd8fCnBD0Eq6jOo2Z53uayaiR_WMnbEBWKCp68QbGgRmvyBQU-ZhWI/s1600/image+%25281%2529.png)
0は値として受け付けたいけどnullやundefinedははじきたいという時に使える
arr = arr.filter(function(elem){
return elem != null;
});
追記
これでもいけるっぽい?
arr = arr.filter(function(elem){
return !!elem;
});
と思ったけどこれだと0もはじくので少し挙動が異なる。
!!undefined
false
!!null
false
!!0
false
!!''
false
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9MC2W_IajJ8llc2-cyBQwETfndNaL3fEOJRQqyRLr2Fvklrvw2UAVa4pRnIwnS2lUJf_xlJn1WuQu8vDs3N-k1SOqzpotEnJuIT56sXLWFbVBrGNCV47NjCR0kr4NkHGXVdVnBkGlfSo/s1600/image+%25282%2529.png)
でもって、空文字 ''
はnullとは等価にならない。(一つ目の方法では受け付けられる)
'' == null
false
0
と ''
は等価
0 == ''
true
// 厳密等価演算子ならfalse
0 === ''
false
0 件のコメント:
コメントを投稿