JavaScript中检测变量是否存在遇到的一些问题


Posted in Javascript onNovember 11, 2013

在编写JavaScript程序时往往需要检测某一变量是否存在,这是一件非常简单的工作,但如果不细心也会遇到一些问题。主要有一些几点:

1、普通变量

<script type="text/javascript"> 
if(variable){ 
alert('rain man'); 
} 
</script>

这时会出现‘variable is not defined'的错误,如果改成下面就会弹出预期的对话框:
<script type="text/javascript"> 
if( typeof variable == 'undefined' ){ 
alert('rain man'); 
} 
</script>

2、对象的属性
<script type="text/javascript"> 
var two = {}; 
if(two.b){ 
alert('rain man'); 
} 
if( window.addEventListener ){ 
alert('This is not IE!'); 
} 
</script>

对于检测对象的属性则不必使用 typeof 。

3、在给对象添加属性时,也会遇到类似的问题

<script type="text/javascript"> 
var obj = {}; 
obj.property.number = 2; //这时会出现 'obj.property is undefined' 的错误 /** 
* 下面这种情况虽然没有出现语法错误,但实际上已经出现了错误. 
* 属性是复合型变量所特有的,而obj.property是数值型变量,不能含有属性. 
*/ 
var obj = {}; 
obj.property = 2 ; 
obj.property.number = 3; 
</script>
Javascript 相关文章推荐
JS控件autocomplete 0.11演示及下载 1月5日已更新
Jan 09 Javascript
基于jquery的修改当前TAB显示标题的代码
Dec 11 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
JavaScript基础语法之js表达式
Jun 07 Javascript
JS实现含有中文字符串的友好截取功能分析
Mar 13 Javascript
详解vue-cli开发环境跨域问题解决方案
Jun 06 Javascript
Require.js的基本用法详解
Jul 03 Javascript
详解JS模块导入导出
Dec 20 Javascript
vue实现跨域的方法分析
May 21 Javascript
Vue路由前后端设计总结
Aug 06 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
Mar 08 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
Jul 17 Javascript
javascript自定义startWith()和endWith()的两种方法
Nov 11 #Javascript
javascript打印输出json实例
Nov 11 #Javascript
JS简单的图片放大缩小的两种方法
Nov 11 #Javascript
js全屏显示显示代码的三种方法
Nov 11 #Javascript
JavaScript获取多个数组的交集简单实例
Nov 11 #Javascript
JavaScript splice()方法详解
Sep 22 #Javascript
javascript与cookie 的问题详解
Nov 11 #Javascript
You might like
在字符串中把网址改成超级链接
2006/10/09 PHP
php短域名转换为实际域名函数
2011/01/17 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
jquery中的事件处理详细介绍
2013/06/24 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
2016/01/14 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
python 文件和路径操作函数小结
2009/11/23 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
python实现list由于numpy array的转换
2018/04/04 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
pytorch中图像的数据格式实例
2020/02/11 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
django有哪些好处和优点
2020/09/01 Python
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
铭立家具面试题
2012/12/06 面试题
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
高级销售员求职信
2013/10/25 职场文书
个人简历自我评价八例
2013/10/31 职场文书
房屋委托书范本
2014/04/04 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
办公室主任岗位职责
2015/01/31 职场文书
高三教师工作总结2015
2015/07/21 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
基于Redis的List实现特价商品列表功能
2021/08/30 Redis