Skip to content

[js] 第91天 请描述下null和undefined的区别是什么?这两者分别运用在什么场景? #759

Open
@haizhilin2013

Description

@haizhilin2013
Collaborator

第91天 请描述下null和undefined的区别是什么?这两者分别运用在什么场景?

Activity

dondonZh

dondonZh commented on Jul 15, 2019

@dondonZh

null 变量不存在
underfined 变量未赋值

ghost

ghost commented on Jul 15, 2019

@ghost

null 是“空值”,表示某个对象/资源并不存在;undefined 是指一个属性或变量还未赋值。
当一个变量本该存储一个对象,或一个函数应该返回一个对象,但这个对象却并不存在时,使用 null 来表示这种情况;
当一个属性或变量没有赋值,又或是一个函数没有返回值(如 C++ 里的 void),则它是 undefined;但通常我们不会将一个变量主动地赋为 undefined。

xxf1996

xxf1996 commented on Jul 16, 2019

@xxf1996
  • null为一个字面量,而undefined则为一个全局变量(全局对象的属性);
  • null指的是一个变量未指向任何对象,而undefined通常代表一个变量处于值未定义(未赋值)的状态;
    参考文档:null - JavaScript | MDN
nowherebutup

nowherebutup commented on Jul 16, 2019

@nowherebutup
  • 概念方面:
    • undefined:一般是简单数据类型,表示此处应该有个值,但是当前尚未赋值,
    • null:一般是复杂数据类型,表示不存在
  • 用途方面:
    • undefined: 返回执行之后无返回值/ 获取对象不存在的属性值
    • null: 原型链的最顶部的不存在对象
forever-z-133

forever-z-133 commented on Aug 1, 2019

@forever-z-133

唔,那我来写点别的东西:

  • es6 的结构与函数默认值,只有 undefined 可设默认值,null 不能
  • +null0+undefinedNaN
  • JSON.stringify(undefined)undefinedJSON.stringify(null)'null'
  • JSON.stringify({a:undefined})'{}'JSON.stringify({a:null})'{"a":null}'
  • typeof null'object'typeof undefined'undefined'
Konata9

Konata9 commented on Aug 22, 2019

@Konata9

undefined 的值是派生自 null 的,因此根据 ECMA-262 的规定 null == undefined // true。两者作为判断条件时都会返回 false,具体的区别是在含义上。

当一个变量未声明就被使用时,返回的是 undefined,可以理解为这个变量在内存中都不存在。
而一个变量声明了,只是暂时不需要赋值时应该赋 null 代表这个变量目前没有对应的值。在实际应用中也会把 null 作为一个初始值。

因此从语义上来讲,不应该给变量赋 undefined

d4c-27

d4c-27 commented on Apr 5, 2022

@d4c-27

Undefined 变量声明未赋值
Null 变量声明并赋值为null:初始赋值时,表明要赋值为对象,删除时,让对象成为垃圾对象

xiaoqiangz

xiaoqiangz commented on Jun 23, 2022

@xiaoqiangz

undefind是声明了该变量 未定义值
null表示的是空值,表示对象不存在,也没有指向任何对象。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    jsJavaScript

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @haizhilin2013@Konata9@xiaoqiangz@xxf1996@forever-z-133

        Issue actions

          [js] 第91天 请描述下null和undefined的区别是什么?这两者分别运用在什么场景? · Issue #759 · haizlin/fe-interview