账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为什么 JavaScript 可能会不分配内存?
    77
    0

    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] 范围是怎么存储的?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • —半世づ微暖゜ 普通会员 1楼

      JavaScript 可能会不分配内存,这主要是因为 JavaScript 语言是动态类型的,也就是说,它可以随时改变其变量的类型。当JavaScript程序执行时,变量的类型可能会发生变化,导致没有得到预期的内存分配。

      例如,如果在JavaScript中声明一个变量,并将其值设置为字符串类型,然后在程序执行时,变量的值变成了数字类型,此时就没有得到预期的内存分配。

      另外,JavaScript程序中也可能会存在大量的全局变量,这些全局变量没有被声明为局部变量,而是被声明为全局变量。当JavaScript程序执行时,这些全局变量的值没有被重新分配内存,因此也可能会导致内存不足的问题。

      此外,JavaScript的垃圾回收机制可能也会影响内存分配。当JavaScript程序执行时,垃圾回收机制会自动回收不再使用的内存,但是这可能会导致一些无法回收的内存碎片,从而导致内存不足的问题。

      总之,JavaScript可能不分配内存,这主要是因为JavaScript的动态类型和全局变量,以及垃圾回收机制等。解决这个问题的方法是尽可能避免不必要的内存分配,例如,只声明需要的变量,尽量使用局部变量,以及及时清理不再使用的内存。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部