关于setTimeout的面试题】的更多相关文章

于地铁上看了一篇帖子,关于setTimeout的面试题,觉得见得多,记录,以学习之. 我们都知道,这样的一个例子: for ( var i = 0;i<5; i++) { console.log(i); 结果不用说,直接输出为0,1,2,3,4: for( var i = 0;i<5;i++) { setTimeout(function() { console.log(i); },1000) }//5,5,5,5,5 这个可能不熟悉的人不怎么会知道,这个setTimout在for里面是异步执行…
在单线程JavaScript这篇文章中,在介绍JavaScript单线程的同时,也介绍了setTimeout是如何工作的.但是对于定时器的一些内容,并没有做深入的讨论.这篇文章,会详细说说JS的两种定时器,setTimeout和setInterval,以及它们的工作方式.同时,会谈谈有关setTimeout的面试题. setInterval setInterval,也称为间歇调用定时器,是指允许设置间歇时间来调用定时器代码在特定的时刻执行.也就是说,setInterval会在每隔指定的时间就执行…
思考: 拿到一个面试题,你第一时间看到的是什么 -> 考点 又如何看待网上搜出来的永远也看不完的题海 -> 不变应万变 如何对待接下来遇到的面试题 -> 题目到知识再到题目 知识体系: JS基础知识 一.变量类型和计算 题目: JS中使用typeof能得到哪些类型? 何时使用 === 何时使用 == ? JS中有哪些内置函数 JS变量按照存储方式区分为哪些类型,并描述其特点 如何理解JSON 知识点: /*一.变量类型*/ /*值类型vs引用类型*/ //从内存来说,值类型是把每个值分块…
异步和单线程 题目: 1.同步和异步的区别? 2.一个关于setTimeout的笔试题. 3.前段使用异步的场景有哪些? 什么是异步? console.log(100) setTimeout(function() { console.log(200) }, 1000); console.log(300) 何时需要异步? 可能发生等待的时候我们需要异步 在等待的过程中不能像alert一样阻塞程序运行 因此在等待的情况下需要异步 前段使用异步的场景 定时任务:setTimeout,setInverv…
09-02.js运行机制:异步和单线程 #前言 面试时,关于同步和异步,可能会问以下问题: 同步和异步的区别是什么?分别举一个同步和异步的例子 一个关于 setTimeout 的笔试题 前端使用异步的场景哪些? 面试时,关于js运行机制,需要注意以下几个问题: 如何理解JS的单线程 什么是任务队列 什么是 EventLoop 理解哪些语句会放入异步任务队列 理解语句放入异步任务队列的时机 #JS的异步和单线程 因为是单线程,所以必须异步. 我们通过题目来解释以下. #题目一:异步 现有如下代码:…
一道经典面试题-----setTimeout(function(){},0) 转载: http://www.w3cfuns.com/notes/17398/e8a1ce8f863e8b5abb530069b388a158/page/3.html#tagsbar 先看题: for (var i = 0; i < 3; i++) { setTimeout(function() { console.log(i); }, 0); console.log(i); } 结果是:0 1 2 3 3 3 很多公…
在一个前端公众号,看到这么一个号称简单的面试题: 1.以下程序输出什么? <script type="text/javascript"> function init(){ for (var i = 0; i < 10; ++i) { setTimeout(function () { console.log(i); }, 0); } } window.onload=init; </script> 2.若需要输出0123456789,应该怎么修改? 结果,输出…
var len=4; while(len--){ setTimeout(function(){ alert(len); },0); alert(len); } 这个题目的答案我先说出来,读者请仔细考虑,为什么. 答案是3,2,1,0,-1,-1,-1,-1. 重点是 setTimeout的异步.…
零.背景 最近在翻看以前的老书<node.js开发指南>,恰好碰到for循环 + setTimeout的经典例子,于是重新梳理了思路并记录下. 一.写在前面,setTimeout和setInterval的执行机制 在日常编码中,你会发现,给setTimeout和setInterval设定延迟时间往往并不准,或者干脆setTimeout(function(){xxx},0)也不是立马执行(特别是有耗时代码在前),这是因为js是单线程的,有一个事件队列机制,setTimeout和setInterv…
看到过下面这样一道题: (function test() { setTimeout(function() {console.log(4)}, 0); new Promise(function executor(resolve) { console.log(1); for( var i=0 ; i<10000 ; i++ ) { i == 9999 && resolve(); } console.log(2); }).then(function() { console.log(5);…