var a = function (val, index) {
console.log(index);
return {
fn: function (name) {
return a(name, val);
}
}
}
var b = a(0); // underfined
b.fn(1); // 0
b.fn(2); // 0
b.fn(3); // 0
var a = function (val, index) {
console.log(index);
return {
fn: function (name) {
return a(name, val);
}
}
}
var b = a(0); // underfined
b.fn(1); // 0
b.fn(2); // 0
b.fn(3); // 0
var b = a(0)为underfined是因为只给val赋值了,并没有给index赋值,所以console.log(index)未定义,剩下的三个是因为name为1、2、3,但是index却赋值为0,所以与name为多少无关,都会打印出0
13 回答12.7k 阅读
7 回答1.8k 阅读
3 回答1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答1.8k 阅读
6 回答716 阅读✓ 已解决
闭包问题
执行了
var b = a(0);
,index没有传进去,所以是underfined,同时会将val赋值为0,这个val不会被回收,因为返回的对象中引用了这个参数执行
b.fn(1);
就是执行a(1,0),这里index赋值为0,所以会打印0,下面同理