繁体   English   中英

Javascript:在函数之间传递大对象或字符串被认为是一种不好的做法

[英]Javascript: Passing large objects or strings between function considered a bad practice

在函数之间传递一个大字符串或对象(比如从ajax响应中)被认为是一种不好的做法吗? 以任何方式保存变量中的响应并继续重用该变量是否有益?

所以在代码中它将是这样的:

var response;

$.post(url, function(resp){
   response = resp;
})

function doSomething() {
  // do something with the response here
}

VS

$.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传递给它(就像您的第二个示例)。 只有这样,您才能获得有关数据可用时的正确时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM