JScript中的undefined和"undefined"的区别

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

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

    仔细阅读JScript手册,其实这个underfined是一个"已定义"的Global值,而不是它的字面意义所表达的未定义。我们看下面这个代码示例,很有趣:
<script language="javascript">
alert(undefined);
alert(variable);
</script>

    执行的结果是:
    undefined.png

    我们稍微修改一下上面的代码,添加一个typeof调用来看看:   
<script language="javascript">
alert(typeof undefined);
alert(typeof variable);
</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的字符串容易拼写错误,对用习惯了的强类型语言的角度来看也显得不专业。

相关文章

  • 简述冻结JS对象方法技术

    简述冻结JS对象方法技术

    本文主要介绍了冻结JS对象方法技术,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • JS基础之逻辑结构与循环操作示例

    JS基础之逻辑结构与循环操作示例

    这篇文章主要介绍了JS基础之逻辑结构与循环操作,结合实例形式分析了JavaScript逻辑判断、流程控制、循环语句等相关操作技巧,需要的朋友可以参考下
    2020-01-01
  • 浅谈JS中的bind方法与函数柯里化

    浅谈JS中的bind方法与函数柯里化

    下面小编就为大家带来一篇浅谈JS中的bind方法与函数柯里化。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 详解webpack的proxyTable无效的解决方案

    详解webpack的proxyTable无效的解决方案

    这篇文章主要介绍了详解webpack的proxyTable无效的解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • JS识别浏览器类型(电脑浏览器和手机浏览器)

    JS识别浏览器类型(电脑浏览器和手机浏览器)

    本文给大家分享一段js代码关于识别浏览器的类型是手机浏览器还是电脑浏览器,有需要的朋友可以参考下本文
    2016-11-11
  • jquery动态添加删除(tr/td)

    jquery动态添加删除(tr/td)

    这篇文章主要介绍了jquery动态添加删除(tr/td)的方法,需要的朋友可以参考下
    2015-02-02
  • JS实现点击文字对应DIV层不停闪动效果的方法

    JS实现点击文字对应DIV层不停闪动效果的方法

    这篇文章主要介绍了JS实现点击文字对应DIV层不停闪动效果的方法,实例分析了javascript操作div层的效果,非常实用,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • js中的闭包实例展示

    js中的闭包实例展示

    闭包是js中的一大特色,也是一大难点。下面这篇文章主要给大家介绍了关于js中闭包的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用js具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-11-11
  • JavaScript 继承详解及示例代码

    JavaScript 继承详解及示例代码

    本文主要介绍JavaScript 继承的知识,这里整理了详细的资料及简单示例代码,帮助大家学习参考,有兴趣的小伙伴可以参考下
    2016-09-09
  • js事件on动态绑定数据,绑定多个事件的方法

    js事件on动态绑定数据,绑定多个事件的方法

    今天小编就为大家分享一篇js事件on动态绑定数据,绑定多个事件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09

最新评论