javascript 变量值为undefined时如何做判断

/*

总结:
1.使用值为 undefined 的变量作判断时需要【使用typeof】 来做判断 才能保证不报错如下:
if (typeof b == 'undifined')

2.如果判断的是一个数组或对象需要 【每一级都使用typeof】来做判断 才能保证不报错 如下:
if (typeof c != 'undefined' && typeof c['b'] != 'undefined' && typeof c['b']['a'] != 'undefined')
	
3.javascript中字符串0的值为true,而非其他语言(如php)中为true
	
*/

//正确写法
alert(Boolean('0')); //true
alert(Boolean(0)); //false
alert(Boolean({})); //true
alert(Boolean('')); //false
alert(Boolean(null)); //false
alert(Boolean(undefined)); //false

//正确写法 虽然这样不报错但这样写基本没什么用
if(!undefined){
	alert('111');
}




//正确写法
if (typeof b == 'undifined') {
	alert('333');
}

//错误写法 会报错 ReferenceError: b is not defined 一个值为 undefined 的变是不能用做判断
alert(Boolean(b)); // 
if (b == undifined) {
	alert('333');
}







//判断数组-----------------------
var a = [];
alert(Boolean(a)); //true
alert(Boolean([])); //true
alert(a[1]);//undefined
alert(Boolean(a[1])); //false

//正确写法
if (typeof a != 'undefined' && typeof a[1] != 'undefined' && typeof a[1][2] != 'undefined') {
	alert(22);
} else {
	alert(33);
}


//错误写法 会报错 TypeError: a[1] is undefined 原因:a虽有定义 但a[1]的值为undefined 所以a[1][2]报错 会影响下面的代码执行
alert(Boolean(a[1][2])); 
if (typeof a != 'undefined' && typeof a[1][2] != 'undefined') {
	alert(22);
} else {
	alert(33);
}



//判断对象-----------------------

//正确写法
alert(Boolean(c)); //true
alert(typeof c);//object
alert(Boolean(c['b'])); //false
alert(typeof c['b']);//undefined
alert(typeof c.b);//undefined
if (typeof c != 'undefined' && typeof c['b'] != 'undefined' && typeof c['b']['a'] != 'undefined') {
	alert('1');
} else {
	alert('2');
}

//错误写法 会报错 TypeError: c.b is undefined
alert(Boolean(c['b']['c'])); //会报错 TypeError: c.b is undefined
if (typeof c != 'undefined' && typeof c['b']['a'] != 'undefined') {
	alert('1');
} else {
	alert('2');
}








版权声明:本文为liujinsuoabc原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。