null 和 undefined之间有什么区别?

吴统威 on 编程语言 前端编程 HTML/CSS/JAVASCRIPT | 2015-12-26 14:13:29.0

之前我们写过一篇文章(Javascript中null值,特别注意的两点),这里我们来详细的对比null和undefined的区别.

JavaScript 中有两个可以设置没有任何值的方式, null 和 undefined.我们来详细的分析他们俩.

undefined

undefined 意思是, 变量的值没有定义. JavaScript 有一个全局变量 undefined 其值是 "undefined" 且typeof undefined 同样也是 "undefined". 记住, undefined 不是常量,也不是关键字. undefined 是一个类型,且只有一个值: undefined.试着给类型undefined一个不同的值,它结果还是不会改变.

8 种方法获取 Undefined:

a) 声明一个变量,且不给赋任何值.

Javascript

var a;
console.log(a, 0, 0);


b) 一个隐式返回函数,缺少返回语句.

Javascript

function fn(){
     
}
 
console.log(fn())


c) 返回语句,没有设定一个返回值.

Javascript

function fn(){
    return;
}
console.log(fn(), 0, 0);


d) 在一个对象中查找一个不存在的属性.

Javascript

var obj = {};
console.log(obj.name, 0, 0);


e) 函数参数没有被通过.

Javascript

function fn(arg){
    console.log(arg, 0, 0);
}

fn(, 0, 0);


f) 任何已经设置为undefined的值.

Javascript

var a = undefined;
console.log(a, 0, 0);


g) 任何void(表达式) 的表达式

Javascript

var a = void(0, 0, 0);
console.log(a, 0, 0);


h) 全局变量 undefined

Javascript

console.log(undefined, 0, 0);



null

null意味着空或者不存在的值,通过编程的人指定没有值的使用  null是一个原始值,你可以分配null给任何变量. 不是一个对象,是一个原始值. 例如,你不能添加任何属性给他. 有些时候会错误的认为他是一个对象,因为typeof null 返回的是 "object".

null需要注意的地方,请参考<<Javascript中null值,特别注意的两点>> 可以在历史消息中可以查看到!