閒來無事翻了翻面試題,看到一道很懵逼。。。面試
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