在函数之间传递一个大字符串或对象(比如从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 }
解决方法
javascript中的对象和字符串通过引用传递. (从技术上讲,通过引用值,这意味着重新分配=函数内部的变量不会影响函数外部的变量,但除了这个问题的点之外.)
这意味着将它们传递给函数并不昂贵,因为没有复制.传递给函数的所有内容只是指向原始对象的指针,这是有效的.
您还需要意识到您的第一个方案甚至无法正常工作:
var response; $.post(url,function(resp){ response = resp; }) function doSomething() { // do something with the response here }
因为时间的关系,你不知道何时调用doSomething(). $.post(),因为你显示它是异步的,因此你不知道它何时实际完成.代码中的resp值必须在完成函数中使用.您必须在完成函数中使用它,或者从完成函数调用一些东西并将resp传递给它(就像您的第二个示例).只有这样,您才能获得有关数据可用时的正确时间.
原文地址:https://www.jb51.cc/js/151183.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。