zoukankan      html  css  js  c++  java
  • JS面试题--使用for循环打印1-10,每个数字出现的间隔约500ms

    又来刷面试题啦,哈哈。

    要求:使用for循环打印1-10,每个数字出现的间隔约500ms。

    分析:考察点--闭包,块级作用域

    方式一、使用闭包+立即执行函数,自己当时的思路也是这样想的,但是,结果却没有体现间隔500ms

    /*结果虽然依次输出了1-10,但是每个数字之间没有间隔,是一次性输出的,所以不正确*/ 
    for (var i = 1; i <= 10; i++) { setTimeout((function(i) { console.log(i); })(i), 500); }

      经过修改,结果满足要求:1.setTimeout每次的间隔500*i,保证每隔500ms输出一次  2.将立即执行移到外层

    /**
     * 使用for循环打印1-10,每个数字出现的间隔约500ms
     * 方法一、使用闭包,注意setTimeout,每隔500ms,因此每次传递的间隔时间要乘以i
     */
    for(var i=1;i<=10;i++){
        (function(i){
            setTimeout(function(){
                console.log(i);
            },500*i);
        })(i);
    
    }
    

      方法二、使用let,let本身就是块级作用域

    for(let i=1;i<=10;i++){
        setTimeout(function(){
            console.log(i);
        },500*i);
    }
    

      

  • 相关阅读:
    从输入网址到页面呈现的过程
    Git 常用命令合集
    Jquery浅克隆与深克隆
    CSS变量教程
    设计模式
    Servlet和JSP简述
    SQL Server,MySQL,Oracle三者的区别
    mysql事务处理
    计时器
    java中length,length(),size()区别
  • 原文地址:https://www.cnblogs.com/jingmi-coding/p/9220409.html
Copyright © 2011-2022 走看看