1. 首页
  2. 综合百科
  3. undefined是什么意思(null 和 undefined对比)

undefined是什么意思(null 和 undefined对比)

简介:关于undefined是什么意思(null 和 undefined对比)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

一般来说,null和undefined表示空,主要的区别是undefined表示一个变量的值没有被初始化,null表示这个变量故意没有对象指向。

undefined变量本质上没有定义隐藏空值null此值虽然定义,但它不指向内存中的任何对象声明空值

简单区分

MDN 中给出的定义

值null是一个文字,不像undefined,它不是全局对象的属性。Null是一个缺失的标识符,表示变量不指向任何对象。最好将null视为尚未创建的对象。在API中,null通常用于返回类型应该是对象,但没有相关值的地方。

undefined是全局对象的属性。也就是说,它是全局作用域的变量。undefined的原始值是原始数据类型undefined。

这是一张来自stackoverflow的经典图片,我找不到确切的来源。

null

undefined

在更深入的理解null和undefined的区别时,我们首先需要知道在JS中null和undefined有哪些不同的形式,才能更好的理解null和undefined的区别。

Object.getPrototypeOf(Object.prototype) //null

一张神奇的图片

let a=undefined + 1 //NaNlet b=null + 1 //1Number(undefined) //NaNNumber(null) //0

JSON.stringify() //" JSON.stringify() //" JSON.stringify() //"

表现形式

" function test(n) test() //falsetest(undefined) //falsetest('test') //turelet undefined='test' //Uncaught SyntaxError: Identifier 'undefined' has already declarations

typeof

Object.prototype.toString.call

typeof null output 'object'实际上是一个低级错误,但到目前为止无法修复。

原因是,在JavaScript的原始版本中,值存储为32位。前三位表示数据类型的标记,其余位是值。

对于所有对象,它的前三位是000类型标志位。在JavaScript的早期版本中,null被认为是C语言中空指针的特殊值,但JavaScript在C语言中没有指针,因此null意味着什么都没有或为空,用全零表示(32)。

因此,当JavaScript读取null时,它的前三位将其视为对象类型,这就是typeof null返回'object'的原因。

toString()是Object的一个原型方法。当被调用时,它默认返回当前对象的[[Class]]。这是格式[object Xxx]的内部属性,其中Xxx是对象的类型。

这是因为toString方法在每个类中都被重写了。因此,需要调用Object中的toString方法,必须以toString的方式调用。叫()。

对于Object对象,直接调用toString()返回'[Object Object]'。对于其他对象,需要调用/apply来返回正确的类型信息。

== 与 ===

很多文章说:undefined布尔值为假,null布尔值为假,所以比较时转换为假,所以undefined==null。事实上,这不是真的。

ECMA在第11.9.3节明确告诉我们:

If x is null and y is undefined, return true.

If x is undefined and y is null, return true.

这是底部的JavaScript内容,至于更深入的内容,如果您对JavaScript源代码感兴趣的话。

这涉及到JavaScript中的隐式类型转换,在执行加法操作之前,隐式类型转换试图将表达式中的变量转换为类型number。例如,'1' + 1给出的结果是11。

当null被转换为number时,它将被转换为0undefined,当number被转换为NaN时。至于为什么要这么做,我怀疑这是JavaScript早期糟糕的设计。

0

Object.getPrototypeOf(Object.prototype)

其实这不是一个很好的解释方式,JSON会将未定义的键对应删除,这是JSON本身的转换原理。

在未定义的情况下,数据之间没有区别,因为它们在性能形式上没有区别:

let obj1=let obj2=console.log(obj1.a) //undefinedconsole.log(obj2.a) //未定义但是注意,当你调用一个接口时,需要在json格式的数据中对un违抗进行特殊处理。

+ 运算 与 Number()

JavaScript对于undefined的限制为全局创建一个只读的undefined,但没有完全禁止定义局部的undefined变量。

据说这个操作在JavaScript的高级版本中是禁止的,但是我没有准确的依据。

永远不要覆盖未定义的变量,即使您的JSON转换将未定义转换为“。不要进行这种操作,这是极其危险的行为。

JSON

:这是一个公平争议的内容。我更喜欢使用null,因为这是显示已定义空值的方式。我不能告诉你确切的原因。

但是我有一个关于使用undefined的建议:如果你需要使用undefined来定义空值,不要做以下任何一件事:

让一个;设a=undefined;然后以以下方式显式声明undefined:

设a=void 0;

let undefiend = 'test'

最终清除了undefined和null之间的基本区别。

本文主要介绍了关于undefined是什么意思(null 和 undefined对比)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://seotea.com/article/1445362.html