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 相关文章推荐
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
js里的prototype使用示例
Nov 19 Javascript
jQuery学习笔记之jQuery原型属性和方法
Jun 09 Javascript
JavaScript中判断整字类型最简洁的实现方法
Nov 08 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
Mar 31 Javascript
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
JavaScript伪数组用法实例分析
Dec 22 Javascript
Vue中的Props(不可变状态)
Sep 29 Javascript
VUE简单的定时器实时刷新的实现方法
Jan 20 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
JS使用cookie保存用户登录信息操作示例
May 30 Javascript
angular4实现带搜索的下拉框
Mar 25 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
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
PHP实现的json类实例
2015/07/28 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
JS基础之undefined与null的区别分析
2011/08/08 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
js实现4个方向滚动的球
2017/03/06 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
Python 中的with关键字使用详解
2016/09/11 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python实现一个简单的验证码程序
2017/11/03 Python
详解python字节码
2018/02/07 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
python操作excel让工作自动化
2019/08/09 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
医院标语大全
2014/06/23 职场文书
医院志愿者活动总结
2015/05/06 职场文书