求助:一道js面试题
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
JavaScript特性:
闭包机制:闭包创建后,可以保存创建时的活动对象。
自加操作符:++,当++作为后缀操作符时,调用++的表达式的值为自加前的自加对象的值。
实例分析:
这道题考察闭包和对象的引用的问题(函数也是对象)
其实就是后面的A的重新赋值后的里面a取得是上一个a里面的变量,而此时由于上一步中的a++导致,前一个A里面的a的变量值为2,所以后面的A的a的值为2,所以2+2=4;
简单的看