Excuse me?這個前端面試在搞事卦碾!

金三銀四搞事季铺坞,前端這個近年的熱門領(lǐng)域,搞事氣氛特別強烈洲胖,我朋友小偉最近就在瘋狂面試济榨,遇到了許多有趣的面試官,有趣的面試題绿映,我來幫這個搞事 boy 轉(zhuǎn)述一下擒滑。

以下是我一個朋友的故事,真的不是我叉弦。

for(vari=0;i<5;i++){console.log(i);}

“小偉丐一,你說說這幾行代碼會輸出什么?”

當面試官在 Sublime 打出這幾行代碼時淹冰,我竟有點蒙蔽钝诚。蛤?這不是最簡單的一個循環(huán)嗎榄棵?是不是有陷阱啊凝颇,我思索一下潘拱,這好像和我看的那個閉包的題很像啊,這面試官是不是沒寫完芭÷浴芦岂?有毒啊。

“應該是直接輸出 0 到 4 吧...”垫蛆,我弱弱的說到禽最。

“是啊,別緊張袱饭,這題沒啥陷阱川无,我就是隨便寫一下÷枪裕”

(Excuse me懦趋?面試官你是來搞笑的嗎,嚇死老子了U钗丁)

“那你在看看這幾行代碼會輸出什么仅叫?”

for(vari=0;i<5;i++){setTimeout(function(){console.log(i);},1000*i);}

額,什么鬼糙捺,怎么還不是我背了那么多遍的那道閉包題诫咱,讓我想想。 setTimeout 會延遲執(zhí)行洪灯,那么執(zhí)行到 console.log 的時候坎缭,其實 i 已經(jīng)變成 5 了,對签钩,就是這樣幻锁,這么簡單怎么可能難到老子。

“應該是開始輸出一個 5边臼,然后每隔一秒再輸出一個 5,一共 5 個 5假消∧ⅲ”

“對,那應該怎么改才能輸出 0 到 4 呢富拗?”

終于到我熟悉的了臼予,加個閉包就解決了,穩(wěn)啃沪!

for(vari=0;i<5;i++){(function(i){setTimeout(function(){console.log(i);},i*1000);})(i);}

“很好粘拾,那你能說一下,我刪掉這個 i 會發(fā)生什么嗎创千?”

for(vari=0;i<5;i++){(function(){setTimeout(function(){console.log(i);},i*1000);})(i);}

“這樣子的話缰雇,內(nèi)部其實沒有對 i 保持引用入偷,其實會變成輸出 5⌒涤矗”

“很好疏之,那我給你改一下,你看看會輸出什么暇咆?”

for(vari=0;i<5;i++){setTimeout((function(i){console.log(i);})(i),i*1000);}

蛤锋爪?什么鬼,這是什么情況爸业,讓我想想其骄。這里給 setTimeout 傳遞了一個立即執(zhí)行函數(shù)。額扯旷,setTimeout 可以接受函數(shù)或者字符串作為參數(shù)拯爽,那么這里立即執(zhí)行函數(shù)是個啥呢,應該是個 undefined 薄霜,也就是說等價于:

setTimeout(undefined, ...);

而立即執(zhí)行函數(shù)會立即執(zhí)行某抓,那么應該是立馬輸出的。

“應該是立馬輸出 0 到 4 吧惰瓜》窀保”

“哎喲,不錯哦崎坊,最后一題备禀,你對 Promise 了解吧?”

“還可以吧...”

“OK奈揍,那你試試這道題曲尸。”

setTimeout(function(){console.log(1)},0);newPromise(functionexecutor(resolve){console.log(2);for(vari=0;i<10000;i++){i==9999&&resolve();}console.log(3);}).then(function(){console.log(4);});console.log(5);

WTFD泻病A砘肌!蛾绎!我想靜靜昆箕!

這道題應該考察我 JavaScript 的運行機制的,讓我理一下思路租冠。

首先先碰到一個 setTimeout鹏倘,于是會先設置一個定時,在定時結(jié)束后將傳遞這個函數(shù)放到任務隊列里面顽爹,因此開始肯定不會輸出 1 纤泵。

然后是一個 Promise,里面的函數(shù)是直接執(zhí)行的镜粤,因此應該直接輸出 2 3 捏题。

然后玻褪,Promise 的 then 應當會放到當前 tick 的最后,但是還是在當前 tick 中涉馅。

因此归园,應當先輸出 5,然后再輸出 4 稚矿。

最后在到下一個 tick庸诱,就是 1 。

“2 3 5 4 1”

“好滴晤揣,等待下一輪面試吧桥爽。”

So easy昧识!媽媽再也不用擔心我的面試了钠四。

以上文章,未經(jīng)考證跪楞,如有雷同缀去,純屬抄我!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甸祭,一起剝皮案震驚了整個濱河市缕碎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌池户,老刑警劉巖咏雌,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異校焦,居然都是意外死亡赊抖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門寨典,熙熙樓的掌柜王于貴愁眉苦臉地迎上來氛雪,“玉大人,你說我怎么就攤上這事耸成”叮” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵墓猎,是天一觀的道長。 經(jīng)常有香客問我赚楚,道長毙沾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任宠页,我火速辦了婚禮左胞,結(jié)果婚禮上寇仓,老公的妹妹穿的比我還像新娘。我一直安慰自己烤宙,他們只是感情好遍烦,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躺枕,像睡著了一般服猪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拐云,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天罢猪,我揣著相機與錄音,去河邊找鬼叉瘩。 笑死膳帕,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的薇缅。 我是一名探鬼主播危彩,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泳桦!你這毒婦竟也來了汤徽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蓬痒,失蹤者是張志新(化名)和其女友劉穎泻骤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梧奢,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡狱掂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亲轨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趋惨。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惦蚊,靈堂內(nèi)的尸體忽然破棺而出器虾,到底是詐尸還是另有隱情,我是刑警寧澤蹦锋,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布兆沙,位于F島的核電站,受9級特大地震影響莉掂,放射性物質(zhì)發(fā)生泄漏葛圃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望库正。 院中可真熱鬧曲楚,春花似錦、人聲如沸褥符。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喷楣。三九已至趟大,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抡蛙,已是汗流浹背护昧。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粗截,地道東北人惋耙。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像熊昌,于是被迫代替她去往敵國和親绽榛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 金三銀四搞事季届腐,前端這個近年的熱門領(lǐng)域,搞事氣氛特別強烈蜂奸,我朋友小偉最近就在瘋狂面試犁苏,遇到了許多有趣的面試官,有趣...
    王鈺峰閱讀 326評論 0 1
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產(chǎn)生大量相似的商品扩所,去做同樣的事情围详,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 7,777評論 2 17
  • 單例模式 適用場景:可能會在場景中使用到對象祖屏,但只有一個實例助赞,加載時并不主動創(chuàng)建,需要時才創(chuàng)建 最常見的單例模式袁勺,...
    Obeing閱讀 2,076評論 1 10
  • 使用 typeof bar === “object” 判斷 bar 是不是一個對象有神馬潛在的弊端雹食?如何避免這種弊...
    Roselle_c閱讀 347評論 0 0
  • 如何控制alert中的換行?\n alert(“p\np”); 請編寫一個JavaScript函數(shù) parseQu...
    heyunqiang99閱讀 1,086評論 0 6