JS原始类型undefined和null

前言

JS中undefined和null均被用来表示无,它们都是原始数据类型,而且只有细微的差别:null用来表示一个“无”的对象,转为数值时结果为0;undefined用来表示一个“无”的原始值,转为数值时结果为NaN。

Number(null) // 0
Number(undefined) // NaN

undefined

Undefined类型只有一个值,就是undefined。

以下情况均返回undefined:

  1. 变量声明后没有赋值
  2. 获取对象不存在的属性
  3. 没有返回值的函数执行结果
  4. 函数的参数没有传入
  5. void(expression)
var i;
console.log(i);//undefined

var o = {};
console.log(o.name);//undefined

function f(){};
console.log(f());//undefined

function f(x){return x;}
console.log(f());//undefined

console.log(void(0));//undefined

可以使用typeof操作符判断一个值是否是undefined类型

console.log(typeof undefined === 'undefined') // true

null

Null类型只有一个值,就是null。逻辑上null表示一个空的对象指针。

console.log(document.getElementById('test'));//null

不可以使用typeof操作符判断一个值是不是null,因为typeof null结果是'object'。最简单的方法是判断它是否等于null。

console.log(typeof null);//'object'
console.log(null === null);//true
console.log(undefined === null);//false
console.log('null' === null);//false

null和undefined虽然略有不同,但都表示缺省值,null表示空值,undefined表示未定义。它们是相等的。

console.log(null == undefined);//true

由于null和undefined都不是构造器类型,所以它们没有任何属性和方法,使用.[]来存取这两个值的属性和方法时均产生类型错误。

var s = null
s.name // 报错
优秀文章首发于聚享小站,欢迎关注!
原文地址:https://www.cnblogs.com/yesyes/p/15351848.html