浏览 3232 次
锁定老帖子 主题:多参数回调函数的陷阱
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-20
js 代码
cellResultSetCallback这个函数用到了循环中resultFillVO这个对象,结果实际调用时,这个resultFillVO老是取到的都是FOR循环的最后一个对象。不知道有谁还遇到过类似问题,请教一下怎么解决的
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-20
另外这个回调函数还不支持resultFillVOArray[i]这样的参数,即当中有i这个变量。
JS中对象、数组以及函数是按引用来复制、传递和比较的,这让人非常的郁闷,稍微不小心就把原始对象中的值给改变了! |
|
返回顶楼 | |
发表时间:2007-08-20
function(data){cellResultSetCallback(data,_cellObj,resultFillVO);})
你这中写法是返回一个函数,而不是马上执行,当你的listBySql真想执行参数中的那个函数时,resultFillVO已经指向你的数组的最后一个了,所以你rsultFillVO老是取到的都是FOR循环的最后一个对象 改成 function(data){cellResultSetCallback(data,_cellObj,resultFillVOArray[i]);}) |
|
返回顶楼 | |
发表时间:2007-08-20
javascript里resultFillVO的作用域是整个函数,而不是for循环,所以最后都指向数组最后一个元素了。
|
|
返回顶楼 | |