var a = 0; var b = 0; function A(a) { A = function(b) { console.log('a+b=' + (a + b++)); } console.log('a=' + a++); } A(1); A(2);//1//4面试的时候遇到的一个题,回来看了半天也没搞懂,希望大佬可以给讲解讲解o(╯□╰)o
2 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
这道题考察闭包和对象的引用的问题(函数也是对象)
其实就是后面的A的重新赋值后的里面a取得是上一个a里面的变量,而此时由于上一步中的a++导致,前一个A里面的a的变量值为2,所以后面的A的a的值为2,所以2+2=4;
简单的看
var a = 0;
var b = 0;
function A(a) {
B = function(b) {
console.log('a+b=' + (a + b++));
}
console.log('a=' + a++);
}
A(1);
B(2);//这样你应该可以看得明白点
添加回答
举报
0/150
提交
取消