gpt4 book ai didi

javascript - 如何将参数传递给ajax回调函数

转载 作者:行者123 更新时间:2023-11-29 18:57:51 25 4
gpt4 key购买 nike

function f(id) {
$.ajax("http://example.com/example",{
success:function(data, textStatus, jqXHR){
$("#"+id).text(data);
}
});
}

成功回调函数可以访问并读取 id 变量就好了,但是由于 ajax 调用是非阻塞的,id 不会随另一个函数 f 改变() 调用,发生在启动 ajax 请求之后但在获得响应之前?如何在请求 ajax 调用时保存并传递 id

最佳答案

won't id change with another function f() call

不,因为每次调用函数时,都会创建作为参数传递的变量的副本。

考虑以下情况:

let a = 1;

function change(param) {
param = 2;
console.log(param);
}

change(a);

console.log(a);

此代码将打印 2,然后打印 1,因为 parama 的副本,因此会更改它不影响 a

当传递一个对象的引用时,事情变得有点复杂:

let a = {field: 1};

function change(param) {
param.field = 2; // changes the original object field
param = {field: 7}; // changes the value of param variable
console.log(param.field);
}

change(a);

console.log(a.field);

控制台将打印 7,然后是 2。在这种情况下,a 是一个引用,而不是原始值。并且虽然 parama 的副本,但它是引用的副本,并且这个副本引用了相同对象。

所以 param.field = 2 改变了原始对象的 field。这就是我们在第二个输出中得到 2 的原因。

但是如果我们给 param 赋一个新值,我们就会用对新对象 {field: 7} 的引用覆盖对 a 的引用。由于 parama 的副本,原始对象不受影响。

关于javascript - 如何将参数传递给ajax回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48393889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com