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');
}







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值