1. 程式人生 > >一道有關setTimeout的面試題

一道有關setTimeout的面試題

setTimeout   只執行一次  可用來實現js程式碼非同步執行
setInterval    迴圈執行

console.log((function(){
      console.log(1);
      setTimeout(function(){
	     console.log(2)
	},1000)
	setTimeout(function(){
		console.log(3)
	},0);
	setTimeout(function(){
		console.log(4)
	},0);
	        console.log(5)
})())

答案是什麼呢?  答案是:      1    5  undefined   3   4  2
下面解析一下此題:       首先要儲備的知識點是: 1、setTimeout 中的時間是  以 “ms” 為單位的, 而且 即便是 0ms 也是有時間的,因為setTimeout中的時間是有時間誤差的;  2、如果函式沒有 return 返回值, 那麼 就會 出現 undefined ,不要問為啥出現undefined, 我也不知道!      這一點就能判斷出 一部分答案了:  1   5   3  4  2 但是為啥還有個 “undefined” ? 因為最外層的  console.log() 裡面包含的是一個立即執行函式 IIFE (Immediately Invoked Function Expression) ,
居然沒有return返回值,那肯定是undefined的了! 
但是為啥要在“1 5 ”的後面呢? 因為“return xxxxx” 一般是寫在函式的最後的,不然所以的console不就都不執行了嘛!可是即便寫在最後,上面有setTimeout,那也得執行在setTimeout之前,但幸虧沒有寫return 不然,那幾個setTimeout也不會執行的啦! so   最後的答案想必我就不多嘴了吧! 最後宣告: 如有錯誤,歡迎批評指出!再次謝過~~~

相關推薦

一道有關setTimeout試題

setTimeout   只執行一次  可用來實現js程式碼非同步執行 setInterval    迴圈執行console.log((function(){ console.log(1); setTimeout(function(){

js同步異步執行順序setTimeOut試題分析

asc func 運行機制 .html tar target 關系 裏的 等待 <script> for(var i=0;i<2;i++){ setTimeout(function(){ conso

Java類與對象初始化的過程(一道經典的試題

java語法 ade 還要 body image LV 賦值 準備 new t 本文不再以ClassLoader的視角解釋這些問題。 首先,Java代碼有個特點,就是成員變量可以在前面的方法中使用,在後面定義。這一特性,很多人說Java了不起,可是為什麽呢?Java為何能夠

記另一道有意思的試題

mage img 如果 nbsp 答案 個人 通過 move 就是 b=[2,4,5,6] for i in b: if not i%2: b.remove(i) 這道題的答案為[4,5],這題也是看起來很容易看見答案很容易犯迷糊的題,不就是去掉列表

g++ 記憶體分配 與 c 語言中的 陣列越界問題 (一道有趣的試題

首先是一段程式: # include <stdio.h> int main(int argc, char* argv[]){ int i = 0; int arr[3] = {0}; for(; i<=3; i++){ arr[i]

百度的一道 java 高頻試題的多種解法

考試結束,班級平均分只拿到了年級第二,班主任於是問道:大家都知道世界第一高峰珠穆朗瑪峰,有人知道世界第二高峰是什麼嗎?正當班主任要繼續發話,只聽到角落默默想起來一個聲音:”喬戈裡峰” 前言 文章出自:www.cnblogs.com/dudu19939/p… 這道題是群裡的朋友的投稿,上面是

一道網易試題

一、題目描述   題目來自網上一個部落格,具體類似如下    @interface ViewController () @property (nonatomic, strong) NSString *target; @end @implementation ViewController -

一道美團試題(揹包問題)的兩種思路

大家好,用CSDN很多年了,一直在吸取養分,很感激.今天心血來潮,咱也貢獻一個. 01 一道面試題 從n個商品中,選擇一些物品使其在不大於揹包容量時價值最大. 001 動態規劃法 下面是程式碼 總體上來講,動態規劃就是找最優子結構, 假設已經找到了選出物品的最佳組合,那麼被選中的商品中去掉一

JavaScript同步、非同步、回撥執行順序之經典閉包setTimeout試題分析

初心-楊瑞超個人部落格誠邀您加入qq群(IT-程式猿-技術交流群):757345416 大家注意了,教大家一道口訣: 同步優先、非同步靠邊、回撥墊底(讀起來不順) 用公式表達就是: 同步 => 非同步 => 回撥 有一道經典的面試題: for

ES6由一道前端阿里試題的思考

題目 const timeout = ms => new Promise((resolve, reject) => { setTimeout(() => { resolve(); }, ms)

JavaScript同步、非同步、回撥執行順序之經典閉包(setTimeout試題分析)

同步、非同步回撥?傻傻分不清楚。 大家注意了,教大家一道口訣: 同步優先、非同步靠邊、回撥墊底! 公式表達:同步=>非同步=>回撥 這口訣的用處是什麼呢?至少應付面試,完全夠用! 例1:(經典面試題) for(var i=0; i<5; i++){ set

關於一道promise的試題

setTimeout(function(){ console.log(1); }, 0) new Promise(function executor(resolve){ console.log(2); for(var i = 0; i

一道SQL語句試題,關於group by的

一道SQL語句面試題,關於group by 表內容: 2015-05-09 勝 2015-05-09 勝 2015-05-09 負 2015-05-09 負 2015-05-10 勝 2015-05-10 負 2015-05-10 負 如果要生成下列結果, 該如何寫sql語

javascript setTimeout試題分析

1、題目 <span style="background-color: rgb(255, 255, 255);"><span style="font-size:14px;">/* *面試官給的原題目如下: *執行mytest()後,控制檯輸出內容是_

一道事件委託試題

/* 道事件委託面試題 - 貓叫老鼠跑主人醒 */ using System; namespace CatCry { class MainClass { stati

一道有趣的試題》的疑問

原文連結: http://geek.csdn.net/news/detail/89813 http://netsmell.com/post/a-interesting-interview-question.html?_biz=MjM5OTA1MDUyMA==&mid

一道騰訊試題(使用遞迴、迴圈、陣列實現上臺階方法)

//一道騰訊面試題 //題目:有50個臺階,一次走一步或者兩步,有多少種可能? 分析: 如果有一個臺階,則只有一種可能:1; 如果有兩個臺階,只有兩種可能:11或2; 如果有三個臺階,則有三種

一道百度試題到分析輸入url到頁面返回的過程(或者查詢返回過程)

輸入地址瀏覽器查詢域名的 IP 地址 這一步包括 DNS 具體的查詢過程,包括:瀏覽器快取->系統快取->路由器快取...瀏覽器向 web 伺服器傳送一個 HTTP 請求伺服器的永久重定向響應(從 http://example.com 到 http://www

一道有趣的試題

說明 void argv star har mov byte stat con . . . . . 同事問了我一道有意思的面試題,經過一番琢磨,解出了答案,遂把原題和我的答案記錄如下: 問題:void f(void) 如何實現,可以打印出 x 是任何一個值?

阿里一道Java併發試題 (詳細分析篇)

說明 前天分享了一篇關於阿里的“Java常見疑惑和陷阱”的文章,有人說這個很早就有了,可能我才注意到,看完之後發現內容非常不錯,有幾個我也是需要停頓下想想,如果後續有機會我錄製一個視訊把這個ppt裡面的所有內容,根據我的理解和知道的給大家分享一遍。 如果你之前還沒有看過建議好好看一遍:Java常見疑惑和陷阱,