为了理解JavaScript中null
和undefined
之间的区别,我偶然发现了this answer中提到的
null
是一个分配值。它可以赋值给一个变量,作为没有值的表示形式
问题是,一旦你像这样定义了一个变量:
var someVariable = null;
someVariable
不是在内存中的某个位置定义的吗?那么它不应该已经有随机的0和1了吗,除非另外指定了特定的值?在比特级别上,null
代表什么?这是否意味着0或1的位数为空?
发布于 2018-09-19 05:43:10
您似乎被这样的回答搞糊涂了:"null
不是一个值“,或者它意味着”一个没有值的变量“。这是错误的,这不是它所说的。
null
值很大程度上是JS语言领域中的一个值。它是一个原始值,就像undefined
、true
、NaN
、0
或42
一样。
您引用的答案表明,此值可以表示应用程序域中的“无值”。将值null
放在那里意味着它没有其他值,例如“既不是真也不是假”。
(无论我们查看的是哪个JS值,我们都不关心它在内存中的位级表示,比如哪一位确切地区分了字符串和整数。它们只是我们可以在我们的程序中使用的值,没有其他的。
在创建作用域时,始终使用undefined
值初始化var
变量。)
发布于 2018-09-19 05:33:46
首先,在JS中编程时,当您声明一个变量时,您永远不应该担心内存中到底保存了什么。
至于为什么JS在null
和undefined
中有两个"nothing“值-这是一个非常好的问题,可能只是语言的一个怪癖。undefined
是“无值”的最佳表示,因为它是声明的变量在被赋予另一个值之前将保留的值,是函数的默认返回值,其中您只需放入return;
或省略return
语句,以及自动分配给任何函数参数的值,这些参数在函数的签名中,但在调用时没有传入。
例如,MDN突出显示了这种用法:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null#Description
https://stackoverflow.com/questions/52394327
复制相似问题