首页 > 关于在if条件句中判断一个值是否存在

关于在if条件句中判断一个值是否存在

一直有一个虽然基础但是理解不深的问题,if(!a){...代码块一...},为什么a值不存在不实执行代码块一,而是报错。 这样的话undefined不就只适合有定义但是没有赋值的变量了吗 ?

我做过这样一个小测试,var a;if(!a.b){...代码块一...}会报错; 而var a="x";if(!a.b){...代码块一...}会执行代码块一。 这个说明,如果a是一个object,那么就可以访问它的属性,即使它不存在。


因为a = undefined,所以undefined.b,肯定不到东西,所以报错,,而a = "x","x".b = undefined,相当于是false,!"x".b = true,所以会执行代码块一。。


都没定义,那肯定报错了。


这其实是设计不合理的问题',不必太过纠结。使用严格模式就可以得到一个统一的解释:未声明的变量不够直接使用。可以避免很多歧义。


如果a没有声明过的话,就会报错,a is not defined
可以使用if(!window.a),这样即使a没有定义过也不会报错


正如你最后那句话,var a;此时 a = undefined。

【热门文章】
【热门文章】