page contents

null 和 undefined 的区别?

苏三 发布于 2021-04-10 10:19
阅读 396
收藏 0


最佳答案 2021-04-16 15:46

641
Pack
Pack

首先我们先来看看 undefined 是什么?

  1. let a // undefined

  2. console.log(window.b)// undefined

  3. let c =undefined

对于只做了声明的变量来说,他的值是 undefined;对于不存在的变量来说,他的值是 undefined。当然你也可以给变量直接赋值 undefined 。

那么对于 null 来说,他只存在于你给变量赋值的情况。

let a =null

接下来就来说说两者的区别。首先,对于类型来说,他们是两个不同的类型。

  1. typeofundefined// 'undefined'

  2. typeofnull// 'object'

  3. null!==undefined// true

  4. null==undefined// true

虽然他们是不同的类型,并且属于基本类型。但是 typeof 对于 null 来说得出的结果是对象,这只是 JS 犯的一个错误,不意味着 null 是对象类型。然后我们还需要注意的是,在双等号的时候,两者是相同的,当然这是因为双等号会隐式转换类型的原因。

还记得之前说的 null 是用来赋值的嘛?

  1. function sayName(name ='yck'){

  2.    console.log(name)

  3. }

  4. sayName(undefined)// yck

  5. sayName(null)// null

对于参数默认值来说,如果传入 undefined 的话就会使用默认值,但是如果传入 null 的话就不会使用默认值。

请先 登录 后评论