javascriptの真偽値の履歴

var a = null;
console.log("a == undefined : ", a == undefined);//true
console.log("a == false : ", a == false);//false
console.log("!a : ", !a);//true
console.log("typeof(a) : ", typeof(a));//object

var b = '0';
console.log("b == 0: ", b == 0);//true
console.log("b ==false: ", b == false);//true
console.log("b =='': ", b == '');//false