在JavaScript中,说"null是一个字面量"是什么意思?

5

undefined 是一个全局变量,它的值是 undefined,这是一种特殊的数据类型,只有一个值。但是,null 代表什么意思呢?

MDN说:

null 的值是一个字面量。

这是什么意思呢?

我知道 "literal" 在编程中是指 "将某些固定的值写入代码中"。比如 x = 3 + 4。

这里的 3 和 4 就是整数字面量。但是我不明白 MDN 文档中的含义。


2
Literals - hindmost
1
@T.J.Crowder 你说得太对了。我今天早上在上班的路上读到了这个,结果把它搞混了 :-(... 哎呀,现在应该记住了。 - Paul Fitzgerald
4个回答

13
字面量只是我们代码中写值的一种方式。null,你实际输入的东西,是定义值null的字面量,就像1是定义值1的字面量一样。 null 只是这样:一个值(Null类型中唯一的值),就像1是一个值(Number类型中的许多值之一)。
请记住,MDN是一个社区编辑的资源。它通常很好,但归根结底取决于谁编写和/或随后编辑了该页面。有时术语有些出入。让我们看一下在您发布问题时作为开头句的那个页面:

null是代表null或“空”值的JavaScript字面量,即没有对象值。

是的,看起来像是编辑错误。应该改成类似于:

null代表有意的缺少任何对象值。

我以后可能会再编辑一下。 我已经编辑了它以及接下来的那一行,试图强调null是字面量,而不是像undefined一样是全局对象属性的标识符。

你能解释一下那个 MDN 页面术语使用有什么问题吗?我不太清楚。说“null 的值是一个字面量”有什么问题吗? - sabithpocker
请记住,MDN是一个由社区编辑的资源。它通常很好,但最终取决于谁编写和/或随后编辑了页面。不错的观点,请参见https://dev59.com/lek6XIcBkEYKwwoYC_j6。 - guest271314
3
是的,那是不正确的。一个“值”不能是一个“字面量”。字面量是你在代码中输入以表示特定值的东西。你使用字面量来表示代码中的值(例如,console.log(42)使用字符4和2并排作为字面量来表示值42),但是值不是字面量。 - T.J. Crowder
1
明白了 :) 谢谢。另外,下面这行解释了作者想要表达的意思:“null 值是一个字面量(不像 undefined 可以是全局对象的属性一样)”。 - sabithpocker
2
@sabithpocker:啊,是的,观察得很好。作者想要表达的意思是:“值null是用文字null表示的,它不像undefined一样是全局对象的属性。” - T.J. Crowder

1
我不是专家,但我认为你已经有了答案:你说3和4是“整数文字”。引用维基百科的话:
在计算机科学中,文字是表示源代码中固定值的符号表示法。
所以3和4都是文字,34或“hello”也是文字。 null也是文字,但它代表的不是数字或字符串,而是没有任何意义。
编辑:正如我所说,我不是专家,对于文字的解释似乎不太正确。T.J. Crowder比我解释得更好,请查看他的回答

1
“字面量是语言本身的一部分” - 这并不正确。3和4并不真正是“语言本身的一部分”。 - nnnnnn
@nnnnnn 我想了解,那么我们应该如何称呼它们呢?我认为它们是语言的基本元素,这不就是字面值吗? - Cithel
字面值(literal)本质上是一个硬编码的值。它不是一个变量,而是一个具体的值,字面上写出来的。也许我误解了你的回答,但我不会说数字字面值3或字符串字面值"hello"是语言的元素 - 但是让你在程序中包含它们的语法 语言的一部分。如果这就是你的意思,那我道歉。 - nnnnnn
我明白您的意思,那确实是我所想的,尽管我没有像您一样表达清楚!“hello”示例是一个很好的例子,因为它是一个字面值,但同时这个单词本身并不是语言的一部分。谢谢您的解释,我会编辑我的回答 :) - Cithel

1

null是JS中的原始类型之一。

在某些需要表示变量或引用中没有值的情况下,该原始类型被用作字面量。

然而,需要注意的是,null的字面值具有特殊含义。

值得注意的是:

typeof null        // object (bug in ECMAScript, should be null)
typeof undefined   // undefined
null === undefined // false
null  == undefined // true

1

null不是一个对象,没有方法,并且缺乏任何值。

请参见Null

在计算机科学中,null值代表指向不存在或无效对象或地址的引用,通常是故意的。null引用的含义因语言实现而异。

在JavaScript中,null是一种基本值之一。


原始值

原始值(也叫原始数据类型)是指不是对象且没有方法的数据。


4.3.12 空值

原始值,代表任何对象值的有意缺失

4.3.13 Null 类型

该类型的唯一值是 null


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接