关于新代码的javascript内存问题

关于新代码的javascript内存问题,javascript,new-operator,Javascript,New Operator,这是我的密码 function function_to_call(text){ var variable_need = new Array ( 0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139, 0x3141, 0x3142, 0x3143, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x

这是我的密码

    function function_to_call(text){
    var variable_need = new Array (
        0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139,
        0x3141, 0x3142, 0x3143, 0x3145, 0x3146, 0x3147,
        0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e
    );

    ......

    return v;
}
    function_to_call(a)
    function_to_call(b)
    function_to_call(c)
每次调用
函数时是否生成
变量\u need

如果频繁调用
函数\u至\u调用


是否需要制作原型以防止内存泄漏?

在函数定义之外定义所需的
变量
数组:

var variable_need = [
    0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139,
    0x3141, 0x3142, 0x3143, 0x3145, 0x3146, 0x3147,
    0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e
];

function function_to_call(text) {

    // do stuff with variable_need

    return v;
}

function_to_call(a);
function_to_call(b);
function_to_call(c);

创建新阵列的最有效方法不是:

var something = new Array();
而是:

var something = [];
然后,您应该使用类似于:

var variable_need = [
    0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139,
    0x3141, 0x3142, 0x3143, 0x3145, 0x3146, 0x3147,
    0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e
];
是否每次调用“函数调用”时都会生成“变量需求”

如果您在函数外部定义了它,则不会发生这种情况,但也不会每次都重置它(因此,如果函数修改了它,那么它将在后续调用中保持修改状态)

如果频繁调用“函数调用”。。。是否需要制作原型以防止内存泄漏

不可以。除非您正在做一些事情来保持函数(或数组)内部的引用处于打开状态,否则它将被垃圾收集

是否每年生成“变量需求” 调用“函数调用”的时间

如果调用“函数调用” 频繁地需要做什么 防止内存泄漏的原型


只要不创建任何闭包,就不会有内存泄漏。(无法从发布的代码中说出什么是“v”?)。但是会有大量的内存分配和释放。最好将*variable_need*移出函数。

其他人已经回答了您的问题,但您也可以在闭包中保留对变量的引用,这样它就不会每次创建,也不是全局变量,而是可用于调用
函数的
函数:

var function_to_call = (function() {
  var variable_need = [
      0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139,
      0x3141, 0x3142, 0x3143, 0x3145, 0x3146, 0x3147,
      0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e
  ];
  return function (text) {

    // variable_need available here

    return v;
  };
}());

function_to_call(a)
function_to_call(b)
function_to_call(c)