未定义Vs Null(在内存分配方面),例如在JavaScript中

未定义Vs Null(在内存分配方面),例如在JavaScript中,javascript,ecmascript-6,Javascript,Ecmascript 6,查看代码片段: var a; var b; var c; var d; a = undefined; b = null; d = 15; d = undefined; 现在,我想知道在编写这段代码时的内存分配(以堆、堆栈或其他形式) 对于变量a、b、c、d——内存分配的大小是多少?还是按什么顺序? 还有,a、c、d是否有内存分配? 另外,如果我们为a或d设置未定义的值——这意味着什么?这是否意味着要进行内存分配,并且“未定义”要存储在内存中?或者对于d——释放“内存分配”,什么也不做 非常困惑

查看代码片段:

var a;
var b;
var c;
var d;
a = undefined;
b = null;
d = 15;
d = undefined;
现在,我想知道在编写这段代码时的内存分配(以堆、堆栈或其他形式)

对于变量a、b、c、d——内存分配的大小是多少?还是按什么顺序? 还有,a、c、d是否有内存分配? 另外,如果我们为a或d设置未定义的值——这意味着什么?这是否意味着要进行内存分配,并且“未定义”要存储在内存中?或者对于d——释放“内存分配”,什么也不做

非常困惑。任何人你有什么想法吗

注意:已看到


请不要重复标记

ECMAScript规范不包含此类实现细节。就它而言,只有“内存”和
null
undefined
是与任何其他值一样的值。如果您想知道具体的实现是如何实现的,那么您应该包括哪一个。根据规范,所有变量都是用
undefined
创建和初始化的。你名义上的问题似乎与你发现的第二个问题完全相同。它怎么没有回答你的问题呢?“还有,a,c,d有内存分配吗?”-你为什么在这里排除
b
,你认为
null
有什么特别吗?你问题中的所有值都是原语,不会作为堆上的单独对象分配。除了
var
声明本身之外,没有内存分配和释放。