闲来无事翻了翻面试题,看到一道很懵逼。。。面试
var a = 0, b = 0; function A(a){ A = function(b){ console.log(a+b++); } console.log(a++); } A(1); A(2);
一眼看去2个A函数,再加上a和b有全局赋值又传了参数,不晓得这题要表达什么,囧。通过一番激烈的讨论,(⊙v⊙)嗯,我仍是没懂。本身多想了想忽然发现不得了的事,A函数里的A貌似没有执行,恩,没执行就对了,那第一次调用咱们就能够跳过它获得第一个的结果1。咱们再看看第一次执行除了打印a而且a++还赋值给了全局变量a还干了什么。。。。。。不聪明的同窗发现,恩,还把funtion(b)}{}那一坨指向了A,因而function A(a)就由原来的一大坨变成了 A = function(b){ console.log(a+b++)}。b=2,a++,二者之和就等于4了。orz,面试题都这样骗人的吗?函数
最后祝本身能在最后短暂的大学时光多学,早日成为技术宅,还有就是寝室的坑货们都进大公司。spa