猿问

求助:一道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


Qyouu
浏览 1148回答 2
2回答

眼眸繁星

这道题考察闭包和对象的引用的问题(函数也是对象)其实就是后面的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);//这样你应该可以看得明白点
随时随地看视频慕课网APP
我要回答