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 相关文章推荐
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
JavaScript函数内部属性和函数方法实例详解
Mar 17 Javascript
一个极为简单的requirejs实现方法
Oct 20 Javascript
footer定位页面底部(代码分享)
Mar 07 Javascript
vue.js项目中实用的小技巧汇总
Nov 29 Javascript
搭建element-ui的Vue前端工程操作实例
Feb 23 Javascript
通过js示例讲解时间复杂度与空间复杂度
Aug 06 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
Oct 16 Javascript
微信小程序在text文本实现多种字体样式
Nov 08 Javascript
angular *Ngif else用法详解
Dec 15 Javascript
vue 项目@change多个参数传值多个事件的操作
Jan 29 Vue.js
JS前端宏任务微任务及Event Loop使用详解
Jul 23 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
文件上传程序的全部源码
2006/10/09 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
javascript 函数使用说明
2010/04/07 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
JS实现放烟花效果
2020/03/10 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
对pandas处理json数据的方法详解
2019/02/08 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Python如何使用函数做字典的值
2019/11/30 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
SQL语言面试题
2013/08/27 面试题
高中生学期学习自我评价
2014/02/24 职场文书
施工安全责任书范本
2014/07/24 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
525心理健康活动总结
2015/05/08 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript
windows server2008 开启端口的实现方法
2022/06/25 Servers