js/html 请教个js函数参数传递的问题
在js函数中,参数传递有没有所谓的值传递或者是地址/索引传递的??如果我的js函数的参数是一个jquery对象,那么它的传递属于哪种。此外,例如:for(vari=0;i...
在js函数中,参数传递有没有所谓的值传递或者是地址/索引传递的??
如果我的js函数的参数是一个jquery对象,那么它的传递属于哪种。此外,例如:
for(var i=0;i<10;i++){
var obj=$("#a_id"+i);
$.ajax({
url:"/url",
type:"post",
dataType:"json",
data:({}),
success:success
});
function success(json){
alert(obj.text());
}
}
这种情况下,传递到success函数中的obj的参数有没有变化的??(例如当i=0时候,a_id0变成是a_id2的对象等,因为ajax是异步请求,故而求解) 展开
如果我的js函数的参数是一个jquery对象,那么它的传递属于哪种。此外,例如:
for(var i=0;i<10;i++){
var obj=$("#a_id"+i);
$.ajax({
url:"/url",
type:"post",
dataType:"json",
data:({}),
success:success
});
function success(json){
alert(obj.text());
}
}
这种情况下,传递到success函数中的obj的参数有没有变化的??(例如当i=0时候,a_id0变成是a_id2的对象等,因为ajax是异步请求,故而求解) 展开
3个回答
展开全部
// js也有地址传递, 来个例子吧
// 接收一个Object,没有返回值
function test (obj2) {
obj2.prop = 2; // 修改obj的属性
obj2.attr = 3; // 添加属性
}
// obj是一个对象
var obj = {
prop: 1 // obj的属性
};
test(obj);
// 没有返回值,但是obj被修改了
alert(obj.prop); // 2
alert(obj.attr); // 3
// 这种情况就是地址传递吧
for (var i = 0; i < 10; i++) {
var obj = $("#a_id" + i);
$.ajax({
url: "/url",
type: "post",
dataType: "json",
data: ({}),
success: success
});
function success(json) {
// 这里obj不会是"#a_id" + i
// 而是for循环结束之后的obj,也就是#a_id9
alert(obj.text());
}
}
// for循环结束之后obj是#a_id9, 也就是最后一个
alert(obj.attr('id') == 'a_id9'); // true
展开全部
其实,本质上,JS是没有引用传递的,函数的传参,都是传值。
但是这里要牵扯到一个变量作用域的问题。
你写的这个部分有问题,先假如没有这个for循环,你这个ajax是在一个函数局部定义了一个局部变量obj的话
因为ajax的success回调函数执行的时候,这个局部函数已经终结,obj已经结束了其生命周期,所以这个时候的obj肯定是undefined
但是这里要牵扯到一个变量作用域的问题。
你写的这个部分有问题,先假如没有这个for循环,你这个ajax是在一个函数局部定义了一个局部变量obj的话
因为ajax的success回调函数执行的时候,这个局部函数已经终结,obj已经结束了其生命周期,所以这个时候的obj肯定是undefined
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你定义的type是post就是post,定义的是get就是get,你这个里面定义的是post
追问
不好意思,这里是两个问题,我说的是函数的参数,不是请求的参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询