//这应该是有层级递进关系的
//第一种情况,属性不存在,如下
var obj = {};
console.log(obj.username === undefined);//此时 if 返回 false 即属性不存在
if(!obj.username)
alert('属性未定义,其实返回undefined,但是undefined 转为bool false');
//第二种情况,属性存在
//属性存在,那么肯定去对比属性值 与真假的关系,此时obj.username 其实会去获取属性值,然后通过if语句看值转为bool的情况
//属性存在 情况一,属性值定义
obj.username=0;//定义为转为false的属性值
if(!obj.username)
alert('存在属性值,但是属性值转为bool类型 false');
//属性存在 情况二,属性值定
obj.username=1;//定义为转为false的属性值
if(obj.username)
alert('存在属性值,但是属性值转为bool类型 true');
//所以,你不能单纯的认为,作用为 你所定义的“初始化”
//所以,最终你要看通过if转化的最终bool值,然后再确定是否要用此种方式去实现功能
//比如,我们再做浏览器兼容的时候,完全可以通过检测某个对象下是否存在某个属性,来判断