关于js变量声明分配内存的问题

没有人回答,我抛砖引玉一下。关于js变量声明分配内存的问题
【关于js变量声明分配内存的问题】
先说明一下我所理解问题的意思,问题作者想知道,当一个变量声明但未赋值时,是否为其分配了内存。我认为,会,但是只是猜测,没有实际对内存检测的实践。下面讲下,我根据语法猜测的依据:1、JS有5个基本原始类型,有Undefined和Null,且,这是两个单例模式的类,只有对应的undefined和null这两个值。2、undefined值是windows的一个不可枚举属性,通过下面代码可以看到:Reflect.ownKeys(window).forEach((key,i)=\u0026gt;{ key==\u0026#39;undefined\u0026#39; \u0026amp;\u0026amp; console.log(i) })3、所以,你看到的undefined值,其实只是一个Undefined的一个实例,它和数字,字符串本质上也许并没有太大区别,所以,任何声明并赋值的变量,都是为其分配了内存的。
■网友
虽然没有了解底层细节,不过写了段代码验证下。在nodejs中运行看到rss确实会变化,大家review下代码看看
关于js变量声明分配内存的问题

const n = 20000;const str = ;for (let i = 0; i \u0026lt; n; i++) { str.push(`var a${i};`);}str.push(\u0026#39;var s2 = process.memoryUsage(); \u0026#39;);str.push(` console.log(\u0026#39;rss delta(bytes):\u0026#39;, s2.rss - s1.rss); console.log(\u0026#39;heapTotal delta:\u0026#39;, s2.heapTotal - s1.heapTotal); console.log(\u0026#39;heapUsed delta:\u0026#39;, s2.heapUsed - s1.heapUsed); console.log(\u0026#39;external delta:\u0026#39;, s2.external - s1.external);})();`);eval(str.join(\u0026#39;\u0026#39;));

■网友
没有。
var a; 只是指针指向了 undefined 。


    推荐阅读