关于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下代码看看
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 。
推荐阅读
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- |徐州市出台《关于优化创新创业生态系统 提升区域科技创新活力的实施意见》及实施细则
- 雨下|全球关于禁售燃油车只是理论上可行吗
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 智叔|很多家长还在整箱买:谈谈关于牛奶的17个真相警惕这些列入黑名单的“假牛奶”
- 关于微信小程序的思考:运营者该何去何从
- 关于人工智能虚拟人的一些问题
- 知乎上关于人生经验的介绍是否可能对青少年造成潜在危害
- 写下我关于做数据分析专员的困惑和各位的建议是
- 非物质文化遗产|市北文体中心一场关于“非遗”的盛会…
