undefined和null的区别

75 阅读1分钟

1.undefined的场景

// 场景一
let a
console.log(a)//undefined
//场景二
let obj = {}
console.log(obj.a)//undefined
// 场景三
function fn() {
}

console.log(fn())//undefined
// 场景四
function fn2(num1, num2) {
    console.log(num2)
}

fn2(0)//undefined

2.null的场景

// 场景一
let obj2 = null

function fn3() {
    return {}
}

obj2 = fn3()
// 场景二
document.querySelector('#id')//nul
// 场景三 正则表达式
'hello'.match(/b/)//null

3.相似点

1.一个对象字面量的值

2.!undefined !null = true

3.都会抛出异常
let a1
console.log(a1.name)
let b1=null
console.log(b1.name)

4.不全等
undefined ==null //true
undefined ===null  //false

4.不同点

  1. undefined是一个全局变量 null是一个关键字

    window.undefined//undefined
    
  2. 类型不同

    typeof undefined//undefined
    typeof null//'object'
    
  3. Object.prototype.toString.call(undefined)//'[object Undefined]'
    Object.prototype.toString.call(null)//'[object Null]'
    
  4. undefined + 'hello'//'undefinedhello'
    null + 'hello'//'nullhello'
    
  5. 参与运算不同

    null + 1    //1
    undefined + 1   //NaN