关于新代码的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)