`
javamore
  • 浏览: 63532 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

深入 JavaScript ‘undefined’

阅读更多

我们知道,javascript是一种弱类型的语言,这意味着我们不必显式定义变量的数据类型。事实上,我们无法在 javascript 上明确地定义数据类型。而只能通过var语句显示声明变量:var myvar;
或这样隐式声明变量:myvar=myvarValue(省略var,在声明的同时初始化)。

javascript有三种基本数据类型(字符串、数值、布尔 ),两种引用数据类型(对象、数组)和两种特殊数据类型(Null 、Undefined )。对于基本数据类型和引用数据类型我们很好理解。对于特殊数据类型Null和Undefined,常常会引起我们的一些疑惑。

在 Javascript 中数据类型 Null 只有一个值:null。如果一个变量的值为null ,那么表示该变量没有保存有效的数、字符串、Boolean、数组或对象,null与vbscript中Empty的概念不相同(Empty指未初始化的变量值)。因此,我们可以通过给一个变量赋 null 值来清除变量的内容。

考查下面的代码:

 

function test1()
{
 var a=null;
 alert("typeof(a):"+typeof(a));
 alert("a==0:"+(a==0));
}

 

结果显示:typeof(null)返回的对象类型为Object,而非类型null。这点潜在的混淆是为了向下兼容。同时,在 Javascript 中,null 与 0 不相等。

如果已声明了一个变量但还没有初始化,那么该变量的值就是 undefined。这与vbscript中Empty的概念是相同的。

如下情况使返回 undefined 值:
1、对象属性不存在;
2、声明了变量但从未赋值。

 

注意:很多人常犯的一个错误是:当他定义一个变量的时候未初始化,想当然地认为该变量的默认值为数字0字符串""。

我们在javascript中如何判断一个变量是否存在,可以使用如下方法:

 

function test2()
{
 var a;
 alert(typeof(a)==undefined);//false
 alert(typeof(a)=="undefined");//true
 alert(a==undefined);//true
}

 


注意:我们可以通过与undefined做比较测试一个变量是否初始化,但不能通过与 undefined 做比较来测试一个变量是否存在,而只能通过typeof(variable)=="undefined"来判断!

下面的例子将证明我的这一提示的正确性:

 

function test3()
{
 var a;
 //alert(b==undefined);//出现错误:'b'未定义
 alert(typeof(b)=="undefined");//true 
}

 

undefined 值与null做比较,考查下面的代码:

 

<script language="javascript">
function myObject(prop1,prop2)
{
 this.prop1=prop1;
 this.prop2=prop2;
}
var myObj=new myObject(null,"test");
alert("myObj.prop1==null:"+(myObj.prop1==null));
alert("myObj.prop1==undefined:"+(myObj.prop1==undefined));
alert("myObj.prop2==undefined:"+(myObj.prop2==undefined));
alert("myObj.prop3==undefined:"+(myObj.prop3==undefined));

var myobjProps="";
for(prop in myObj)
 myobjProps+=prop+",";
alert("myObject的属性有:"+myobjProps);

alert("myObject.prop3 exists?:"+(("prop3" in myObj)?"YES":"NO"));
//要检查一个对象属性是否存在,可以in 运算符。
</script>

 

总结:undefined 值与null做比较,如下情况时,比较的结果为 true:
 1、属性 myObj.prop1 包含null 值;
 2、属性 myObj.prop3 不存在。

 

2
1
分享到:
评论

相关推荐

    深入解析JavaScript中的`undefined`与`null`:探索它们的异同

    本文将深入探讨undefined和null的含义、用途以及如何在JavaScript中正确区分和使用它们。 理解undefined和null的区别对于JavaScript开发者来说至关重要。它们在表示“没有值”的概念时有着不同的用途和含义。通过...

    深入浅出JavaScript源代码

    首先,我们要明白JavaScript的基础,包括变量、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、操作符(如算术、比较、逻辑和赋值操作符)以及流程控制语句(如条件语句、循环语句)。...

    JavaScript学习深入—面向对象编程

    ### JavaScript学习深入—面向对象编程 #### 一、JavaScript中的类型概述 JavaScript作为一种动态的、弱类型的语言,其核心特点之一在于它灵活的对象模型。尽管JavaScript的基础架构支持面向对象编程(OOP),但在...

    深入理解javascript原型和闭包.pdf

    在JavaScript中,简单的值类型(如undefined, number, string, boolean)并不是对象,它们是基本的数据类型。而函数、数组、普通对象以及通过new关键字实例化的对象都是引用类型,属于对象范畴。 要判断一个变量...

    深入浅出javascript pdf与实例

    深入理解JavaScript,首先要掌握基础语法,包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔、null、undefined、对象、数组、符号)、运算符(算术、比较、逻辑、三元)、流程控制(条件语句、循环...

    深入浅出JavaScript(jb51.net).pdf

    首先,书中的内容会从JavaScript的基本语法开始讲解,包括变量、数据类型(如字符串、数字、布尔值、null和undefined)、操作符(算术、比较、逻辑、三元)、流程控制(条件语句、循环结构)以及函数。这些基础知识...

    550836 深入理解JavaScript [(美)罗彻麦尔著]_jvascript_

    《深入理解JavaScript》一书由美国作者罗彻麦尔撰写,是JavaScript编程领域的经典之作。本书旨在帮助读者全面、深入地掌握JavaScript这门强大的脚本语言,从而在Web开发领域中发挥出更大的潜力。 JavaScript,通常...

    在JavaScript中学习undefined学习总结.doc

    深入理解`undefined`对于编写健壮的JavaScript代码至关重要。 首先,我们要明确`undefined`不是`null`,尽管它们在某些比较操作中被视为相等。`null`是一个具体的值,表示“无”或“空”,而`undefined`则表示变量...

    深入浅出Javascript压缩包3

    《深入浅出JavaScript压缩包3》是一份专为JavaScript学习者设计的实践教程,旨在帮助读者从基础到高级,全面掌握这门强大的编程语言。这个压缩包中的核心资源是《Head First JavaScript》2008年1月版的第三部分,这...

    js判断undefined类型,undefined,null,NaN的区别

    JavaScript 中的 undefined、null、NaN 的区别 在 JavaScript 中,undefined、null、NaN 是三个经常被混淆的概念,但它们有着不同的含义和用途。今天,我们将深入探讨这三个概念的区别和应用。 undefined 在 ...

    JavaScript程序设计-JavasScript类型之undefined.pdf

    JavaScript是一种广泛应用于Web开发的动态脚本语言,其灵活性和弱类型特性使得它在处理数据类型时具有独特的特点。...通过深入学习这些基础知识,可以提升JavaScript编程的技能水平,并有助于编写出更加健壮的代码。

    深入理解jquery和javascript系列

    1. **变量与数据类型**:JavaScript支持var、let和const声明变量,以及六种基本数据类型(Number、String、Boolean、Null、Undefined、Symbol)和一种复杂数据类型(Object)。 2. **控制流**:包括条件语句(if......

    Javascript类型系统之undefined和null浅析_.docx

    JavaScript 类型系统中的 `undefined` 和 `null` 是两种特殊的原始值,它们分别代表不同的概念。`undefined` 主要用于表示变量已经声明但未...了解它们的历史背景和用法,对于深入理解和优化 JavaScript 代码至关重要。

    深入理解JavaScript中的this关键字

    // 输出 undefined,因为 `this` 指向全局对象 ``` 了解了这些基本概念后,我们还可以讨论`this`在事件处理程序、模块化和异步编程(如回调函数和Promise)中的应用。在实际开发中,深入理解`this`的关键点可以帮助...

    悟透JavaScript.pdf(想深入学习JavaScript的参考资料【精华】)[高清晰]

    在深入探讨JavaScript之前,我们首先要理解编程世界的基本构成:数据与代码。这两者之间的互动构成了编程的基础。 **数据**:通常较为稳定,代表着不变的信息。在编程中,数据可以视为存储信息的基本单位,比如数字...

    JavaScript深入学习文档集锦

    1. JavaScript-1.doc:可能涵盖了JavaScript的基础知识,包括变量、数据类型(如字符串、数字、布尔值、null、undefined)、操作符(算术、比较、逻辑)、流程控制(条件语句if...else、switch,循环for、while、do....

    javascript 中null和undefined区分和比较

    在JavaScript编程语言中,`null`和`undefined`是两种非常重要的值,它们在很多情况下容易引起混淆。本文将深入探讨两者之间的区别和比较。 首先,`undefined`是一种特殊的值,它代表变量已经被声明但没有赋值。在...

    JavaScript undefined及null区别实例解析

    在JavaScript中,`undefined` 和 `null` 是两种特殊的值,它们虽然在某些情况下表现出相似的行为,但在语义上有着明显的区别。理解这两者之间的差异...在学习JavaScript的过程中,深入理解这些基本概念是至关重要的。

    head first JavaScript源码

    变量是存储数据的容器,JavaScript支持多种数据类型,如字符串、数字、布尔值、null、undefined、对象和Symbol等。控制结构是程序流程的重要组成部分,包括条件语句(如if...else)和循环(如for、while和do...while...

Global site tag (gtag.js) - Google Analytics