您的位置:首页 > Web前端 > JavaScript

javascript中的undefined和null

2016-03-25 19:47 225 查看

预备

Javescript的数据类型分为两大类:原始类型和对象类型。原始类型包括数字,字符串,布尔值;Javascript有两个特殊的原始值:null和undifined。它们不是数字,字符串和布尔值,他们通常代表各自特殊类型的唯一的成员。

定义

undefined:表示值的空缺。是预定义的全局变量,不是关键字,它的值就是“未定义”;

在JavaScript中,undefined这个词有多重含义.首字母大写的Undefined表示的是一种数据类型,小写的undefined表示的是属于这种数据类型的唯一的一个值.但这两种undefined都只能存在于文档或规范中,不能存在于JavaScript代码中.在JavaScript代码中,你看到的undefined最有可能是全局对象的一个属性,该属性的初始值是就是前面所说的原始值undefined,还有种情况就是,这个undefined是个局部变量,就像其他普通变量一样,没有任何特殊性,它的值不一定是undefined,但通常情况下都是的.下面我们所说的undefined,都指的是window.undefined这个属性.

在ES3中(Firefox4之前),window.undefined就是一个普通的属性,你完全可以把它的值改变成为任意的真值,但在ES5中((Firefox4之后),window.undefined成了一个不可写,不可配置的数据属性,它的值永远是undefined.

一个未初始化的变量的值为undefined,一个没有传入实参的形参变量的值为undefined,如果一个函数什么都不返回,则该函数默认返回undefined.

null:常用来描述“空值”,表示一个特殊值,是关键字。他可以表示数字,字符串或对象是“无值”的。

使用typeof运算符

console.log(typeof null);           //"object"
console.log(typeof undefined);      //"undefined"


两者往往可以互换

“==”会返回true,“===”会返回返回false;

转换成bool值时都是false;

他们都不包含任何属性和方法;

用法的不同

转换成数字:undefined值为NaN,而null的值为0;

前面所提到的用typeOf运算结果不同;

Undefined 这个值表示变量不含有值,可以通过将变量的值设置为 null 来清空变量。

出现场所

undefined:它是变量的一种取值,表示没有被初始化;对象的属性和数组元素的值不存在时,会返回undefined;函数没有返回值,则会返回undefined;引用没有提供实参的函数形参的值也会是undefined;

var x;
console.log(x);
var obj={};
console.log(obj.x);
function xx(xx){
x=0;
console.log("xx函数内:"+xx);
}
console.log("xx函数外:"+xx());




null:Undefined 这个值表示变量不含有值,可以通过将变量的值设置为 null 来清空变量。

内存中 会分2块区域

栈:保存变量的空间

堆:保存数据的空间

每个变量 本身在内存中有一个地址 这个地址里面保存了变量指向的值的内容或者地址(堆的地址)

1. undefined表示未定义的变量;

2. 设置 null 的话 变量对应的地址(堆中)里面的 内容 就清空了 本来 这个变量所在地址 里面保存 了另外一个 数据的地址 现在就没了

欢迎大家纠错和补充

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript null undefined