这是我的代码
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)
每次调用variable_need
时都会生成function_to_call
吗?
如果经常调用function_to_call
...
是否需要制作原型以防止内存泄漏?
答案 0 :(得分:3)
其他人已经回答了你的问题,但是你也可以在闭包中保留对变量的引用,这样它就不会每次创建而且不是全局变量,但是function_to_call
函数可以使用它:
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)
答案 1 :(得分:2)
在函数定义之外定义variable_need
数组:
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);
答案 2 :(得分:2)
每次“function_to_call”调用时都会生成“variable_need”吗?
是
如果你在函数之外定义它,那就不一定了,但是每次都不会重置它(所以如果函数修改了它,那么它将在以后的调用中保持修改)。
如果频繁调用“function_to_call”...是否需要制作原型以防止内存泄漏?
没有。除非你正在做一些事情来保持对函数内部(或特定数组)的引用打开,否则它将被垃圾收集。
答案 3 :(得分:1)
创建新数组的最有效方法不是:
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
];
答案 4 :(得分:1)
每次都生成“variable_need” “function_to_call”调用的时间?
是
如果调用“function_to_call” 经常......是否需要制作 原型防止内存泄漏?
只要您没有创建任何闭包,就没有内存泄漏。 (不能说从发布的代码,什么是'v'?)。但是会有很多内存分配和释放。最好将* variable_need *移到函数外部。