//分解代码:
var o = {
s:1
};
var temp = function(obj){
alert(obj.s);
setTimeout(function(){
temp();//注意这里参数丢了
},90);
}
temp(o);
第二次执行的时候没有传递o进去,所以相当于调用undefined.s,浏览器会抛出异常obj is undefined
修改:
var o = {
s: 1
};
var temp = function(obj) {
alert(obj.s);
var func = arguments.callee;
setTimeout(function(){func(obj);},90);
}
temp(o);
第二次你没把对象传进去,就是说匿名函数没有传进实参。
一楼正解