在函数之间传递一个大字符串或对象(假设是从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
是一个大的对象或字符串,并且可以在多个函数之间传递。
response = resp;
这样赋值外部变量的做法必然会让代码难以维护(如果它能工作的话,还要考虑不可避免的竞态条件)。从闭包中赋值可能看起来很有用,但我总是能找到更好的解决方案,通常涉及启动回调,传递直接参数,并查看回调的返回值。如果这种策略似乎太普通,那么它通过有效性和可维护性获得了它的普遍性。 - Keen