猿问

为什么 JavaScript 可能会不分配内存?

MDN 的内存管理上的例子提到,JavaScript 可能决定不分配内存,不知道怎么理解:

var s = "azerty";

var s2 = s.substr(0, 3); // s2 是一个新的字符串

// 因为字符串是不变量,

// JavaScript 可能决定不分配内存,

// 只是存储了 [0-3] 的范围。


var a = ["ouais ouais", "nan nan"];

var a2 = ["generation", "nan nan"];

var a3 = a.concat(a2); 

// 新数组有四个元素,是 a 连接 a2 的结果

意思是不给变量 s2 分配内存吗?只是存储 [0-3] 范围是怎么存储的?

UYOU
浏览 339回答 2
2回答

繁华开满天机

substr 这个方法是定义在 String.prototype 上面的,s 作为一个字符串在执行 substr 的时候,已经执行了一次 new String(s)。正常情况下 s2 也应该是保存在内存中,那么【可能】这种时候是否是以对象的形式去保存 s2,也就是指保存[0-3]的范围?
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答