javascript - 关于在if条件句中判断一个值是否存在
怪我咯
怪我咯 2017-04-11 10:37:13
[JavaScript讨论组]

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

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(5)
阿神

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

天蓬老师

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

伊谢尔伦

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

大家讲道理

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

天蓬老师

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号