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 相关文章推荐
在IE下:float属性会影响offsetTop的取值
Dec 22 Javascript
解析js原生方法创建表格效率测试
Jul 08 Javascript
JavaScript中的运算符种类及其规则介绍
Sep 26 Javascript
Javscript删除数组中指定元素并返回新数组
Mar 06 Javascript
谈谈JavaScript自定义回调函数
Oct 18 Javascript
js阻止浏览器默认行为的简单实例
May 15 Javascript
Bootstrap开关(switch)控件学习笔记分享
May 30 Javascript
JavaScript组合模式学习要点
Aug 26 Javascript
Bootstrap table简单使用总结
Feb 15 Javascript
jQuery选择器之子元素选择器详解
Sep 18 jQuery
AngularJS使用$http配置对象方式与服务端交互方法
Aug 13 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
Mar 10 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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
discuz安全提问算法
2007/06/06 PHP
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
PHP Hash算法:Times33算法代码实例
2015/05/13 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
javascript 写类方式之二
2009/07/05 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
django正续或者倒序查库实例
2020/05/19 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
python collections模块的使用
2020/10/16 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
雨花台导游词
2015/02/06 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫
Python学习之迭代器详解
2022/04/01 Python