js基础练习题 第4天

在本栏中,我将记录一些JavaScript基础练习题,提升大家对JS的理解。
该篇文章是该系列的第四天。

正文

该题目转自 80% 应聘者都不及格的 JS 面试题,感谢作者提供如此优质的面试题。

仔细阅读以下代码段,回答下列问题:

1
2
3
4
5
6
for (var i = 0; i < 5; i++) { 
setTimeout(function() {
console.log(i);
}, 1000);
}  
console.log(i);

  1. 该代码段的运行结果是什么?

  2. 若用箭头(=>)表示其前后的两次输出之间有 1 秒的时间间隔,而逗号(,)表示其前后的两次输出之间的时间间隔可以忽略,那么代码实际运行的结果该如何描述?

  3. 如果期望代码的输出变成:5 => 0, 1, 2, 3, 4,该怎么改造代码?给出你的解决方案

  4. 如果期望代码的输出变成0 => 1 => 2 => 3 => 4 => 5,并且要求原有的代码块中的循环和两处console.log不变,该怎么改造代码?给出你的解决方案

  5. setTimeout定时是否准确?为什么?

  6. 简单谈谈你对闭包的理解?

说明

  1. 题目中出现的JS指的是采用ECMAScript 2015及之后标准的JavaScript

  2. 题目中,若有错误和需完善的地方,可在下方留言反馈哈~~

  3. 查看答案和解析,请点击js基础练习题第4天 答案及解析

--本文结束 感谢阅读--
创作十分不易,原创更应鼓励