JScript中的undefined和"undefined"的区别


Posted in Javascript onMarch 08, 2007

JScript中用于表示未定义的undefined标识符到底是表示什么未定义?它和"undefined"(包括"在内)又有什么区别和联系呢?为什么有的时候可以使用undefined来和变量做比较,而有的时候又不行呢?

    underfined"undefined"的区别大家一眼就能看出来。在一般的认知下,我们认为undefined是JScript提供的一个"关键字",而"undefined"却毫无悬念的就是一个字符串,只是引号内的内容长得和undefined一个样。undefined"undefined"的区别虽然是十分明显的,但它们的联系也是紧密的。

    仔细阅读JScript手册,其实这个underfined是一个"已定义"的Global值,而不是它的字面意义所表达的未定义。我们看下面这个代码示例,很有趣:

JScript中的undefined和&quot;undefined&quot;的区别JScript中的undefined和&quot;undefined&quot;的区别<script language="javascript">JScript中的undefined和&quot;undefined&quot;的区别
JScript中的undefined和&quot;undefined&quot;的区别alert(undefined);
JScript中的undefined和&quot;undefined&quot;的区别alert(variable);
JScript中的undefined和&quot;undefined&quot;的区别
</script>

    执行的结果是:
    JScript中的undefined和&quot;undefined&quot;的区别

    我们稍微修改一下上面的代码,添加一个typeof调用来看看:   

JScript中的undefined和&quot;undefined&quot;的区别JScript中的undefined和&quot;undefined&quot;的区别<script language="javascript">JScript中的undefined和&quot;undefined&quot;的区别
JScript中的undefined和&quot;undefined&quot;的区别alert(typeof undefined);
JScript中的undefined和&quot;undefined&quot;的区别alert(typeof variable);
JScript中的undefined和&quot;undefined&quot;的区别
</script>

    这下结果应该是什么呢?显示"object""undefined"吗?当然不是了,两个alert调用都将显示"undefined"

    所以undefined是脚本引擎定义的一个常量,它在脚本引擎初始化完毕后存在。它的实际作用是用来表示一个已定义的变量的未初始化状态(uninitialized),比如var i;,这时这个i的值就是undefined,而i是实实在在define了的,只是未初始化。这时我们就可以写这样的表达式来对i做判断,比如if ( i == undefined )。如果从未在代码中出现过的变量被使用,这时的未定义的概念就是不undefined所描述的未初始化了,而是说明该变量完全未被登记到脚本引擎的上下文中。使用类似if ( abc == undefined )的语句,将得到类似上图中的第二个错误提示。

    在实际使用中,如果使用typeof来判断变量是否未定义,是可以完全兼容未定义(undefined)未初始化(uninitialized)两种情况的,只是很多时我不喜欢使用 if ( typeof xxx == 'undefined' ) 这样的写法,因为literal的字符串容易拼写错误,对用习惯了的强类型语言的角度来看也显得不专业。

Javascript 相关文章推荐
js查找父节点的简单方法
Jun 28 Javascript
jquery sortable的拖动方法示例详解
Jan 16 Javascript
JS中操作JSON总结
Dec 06 Javascript
深入探讨javascript中的数据类型
Mar 04 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
Jun 07 Javascript
简单实现bootstrap导航效果
Feb 07 Javascript
Node.js 中exports 和 module.exports 的区别
Mar 14 Javascript
bootstrap模态框示例代码分享
May 17 Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
Mar 13 Javascript
extjs图形绘制之饼图实现方法分析
Mar 06 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
Aug 07 Javascript
JavaScript语句可以不以;结尾的烦恼
Mar 08 #Javascript
JScript中的&quot;this&quot;关键字使用方式补充材料
Mar 08 #Javascript
function, new function, new Function之间的区别
Mar 08 #Javascript
JavaScript中this关键字使用方法详解
Mar 08 #Javascript
区分JS中的undefined,null,&quot;&quot;,0和false
Mar 08 #Javascript
在JavaScript中使用inline函数的问题
Mar 08 #Javascript
JS类中定义原型方法的两种实现的区别
Mar 08 #Javascript
You might like
PHP简单的MVC框架实现方法
2015/12/01 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
浅谈flask源码之请求过程
2018/07/26 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
校园自助餐厅的创业计划书
2013/12/26 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
提拔干部考察材料
2014/05/26 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
2014年妇联工作总结
2014/11/21 职场文书
青岛导游词
2015/02/12 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
经营目标责任书
2015/05/08 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书