Edited at

javascriptで厳密に真偽値を渡す

More than 3 years have passed since last update.

javascriptにおいて0 == falseはtrueですが、0 === falseの場合falseとなります。それらの式の評価を厳密にしないことも多いかと思いますが、例えば疎結合なmodule間でやりとりがある場合はなるべく厳密に値の受け渡しをするべきです。

例として、ある関数にundefinedではなくfalseを渡したい場合には、以下のようにすると簡潔に記述することができます。

function hoaa(flag) {

if(flag === false) { alert('偽'); }
}

var hoge = {
name: 'test'
value: 1
};

// 存在しないプロパティfugaをfalseとして渡す
hoaa(!!hoge.fuga);

!~で式の評価を反転することができるので、続けて2回反転させることで、真偽値を得ることができます。