在函数之间传递大字符串或对象(比方说来自 ajax 响应)是否被认为是一种不好的做法?以任何方式将响应保存在变量中并继续重用该变量是否有益?
所以在代码中它会是这样的:
var response;
$.post(url, function(resp){
response = resp;
})
function doSomething() {
// do something with the response here
}
对比
$.post(url, function(resp){
doSomething(resp);
})
function doSomething(resp) {
// do something with the resp here
}
假设 resp
是一个大对象或字符串,它可以在多个函数之间传递。
最佳答案
javascript 中的对象和字符串是通过引用传递的。 (从技术上讲,通过引用值,这意味着用 =
重新分配函数内部的变量不会影响函数外部的变量,但这不是这个问题的重点。)
这意味着将它们传递给函数并不昂贵,因为没有复制。传递给函数的只是一个指向原始对象的指针,这是高效的。
您还需要意识到您的第一个方案甚至无法正常工作:
var response;
$.post(url, function(resp){
response = resp;
})
function doSomething() {
// do something with the response here
}
因为事情的时间安排,你不知道什么时候调用doSomething()
。 $.post()
如您所见,它是异步的,因此您不知道它何时实际完成。代码中的 resp
值必须在完成函数中使用。您必须在完成函数中使用它或从完成函数中调用某些东西并将 resp
传递给它(就像您的第二个示例)。只有这样,您才能获得该数据可用的正确时间。
关于Javascript:在函数之间传递大对象或字符串被认为是一种不好的做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23942054/