今天遇到一个问题,题目如下:

var len=4;
while(len--){setTimeout(function(){console.log(len); },0); console.log(len);
};

 问:输出是什么?

我的答案是打印3,2,1,0,-1,-1,-1,-1

过程是先执行console.log(len) ,执行了4次之后,再执行4次 setTimeout

问题很简单,但是我就想把console.log(len) 去掉,如下:

var len=4;
while(len--){setTimeout(function(){console.log(len); },0);
};

这下会打印什么?

应该是-1,-1,-1,-1对吧,但是很遗憾,在chrome的控制台下显示的是 15,-1,-1,-1,-1为什么多个15,我就很好奇的在执行了一边这段代码,结果显示的是19,-1,-1,-1,-1

再执行就是23,-1,-1,-1,-1

很有有规律,这4个-1前面的数字是什么?我发现它是每次循环的次数,但是刚打开我之前没有执行啊,第一次打印也不能是15啊

秉着知根知底的信念,就去谷歌了一下,发现这是setTimeout的返回值。为什么会有这么一个返回值呢,大家都知道setTimeout执行会被clearTimeout结束等待,它是靠什么结束的呢?是ID,

大家可能不太相信,可以这样来尝试下:

var len=4;
while(len--){var time=setTimeout(function(){console.log(len); },0);
};
console.log(time);

这样就可以知道time是什么了吧。

转载于:https://www.cnblogs.com/wolm/p/3489066.html

setTimeout()的返回值相关推荐

  1. setTimeout() 方法的返回值

    setTimeout() 方法的返回值 setTimeout() 方法的返回值是一个唯一的数值,这个数值有什么用呢?如果你想要终止 setTimeout() 方法的执行,那就必须使用 clearTim ...

  2. setInterval 和setTimeout 清空定时器,返回值,赋值为null的区别

    说到定时器,很多人都不陌生,觉得这个有什么说的,很简单的了,其实你真正的理解了它了吗? 定时器的返回值是什么?clearInterval和 null有什么区别,可能有些干了几年的都不知道,下面我以se ...

  3. typescript 中使用 setTimeout 返回值类型 eslint 检查错误 ‘NodeJS‘ is not defined.eslint(no-undef)

    项目场景: 前端项目 使用typescript eslint 问题描述 使用setTimeout 函数,接收其返回值. 返回值类型 function setTimeout<TArgs exten ...

  4. java 定时器返回值_javascript 函数返回值(return)、定时器(setTimeout、setInterval)...

    一.函数的返回值:return 1.函数名+括号=return后面的值 function fn1(){ return 100; } alert(fn1()); // 100 fn1()=return后 ...

  5. android 调用js怎么获取返回值_js 函数

    函数是一个特殊的对象 具名函数 function 函数名(形式参数1,形式参数2){ 语句 return 返回值 } 匿名函数 上门的具名函数,去掉函数名就是匿名函数 let a =function( ...

  6. JS一起学04:函数返回值、定时器、随机数、自动播放的幻灯片

    一.函数返回值----将相应的值返回到函数调用的地方 1. 可以不写返回值 2. 可以没有return,如果不返回,默认返回undefined 3. 本函数内,renturn之后的JS语句不再执行,跳 ...

  7. async js 返回值_图文讲解浏览器执行JS过程中的微任务和宏任务

    背景 我们知道浏览器有一个特定的事件执行机制,专业名词叫做Event Loop.如下图所示,浏览器会优先执行同步代码,遇到异步的代码时,会被挂起并在需要执行的时候加入到 Task(有多种 Task) ...

  8. 如何获取.then的返回值_仅仅知道如何终止XHR请求,或许对你来说是不够的!

    TLDR: 当我们需要的时候,我们可以通过AbortController接口来终止一个或者多个请求. 前言 到目前为止,我们有两个常用的基本的手段去发送请求进而局部刷新页面内容,其一是XMR(XMLH ...

  9. async js 返回值_获取JavaScript异步函数的返回值

    今天研究一个小问题: 怎么拿到JavaScript异步函数的返回值? 1.错误尝试 当年未入行时,我的最初尝试: function getSomething() { var r = 0; setTim ...

最新文章

  1. 诊断IIS中的ASP0115错误
  2. 谷歌X实验室开源了一款像血糖仪一样的EEG识别系统
  3. creo如何更改打开时显示方式_Creo4.0入门教程(3):设置工作目录和打开以及保存文件...
  4. python数据分析架构_Python数据分析
  5. mac os 相关命令
  6. Android开发学习之路-机器学习库(图像识别)、百度翻译
  7. 回顾我个人的创业经历
  8. Pytorch-torchvision源码解读:ASPP
  9. AlphaZero完胜三大世界冠军棋类程序:5000个TPU、自学一天
  10. 在Scala IDEA for Eclipse或IDEA里程序编译实现与在Spark Shell下的对比(其实就是那么一回事)...
  11. Ambari安装之安装并配置Ambari-server(三)
  12. 每日java制作小工具_制作Java小工具并在命令行中执行
  13. OPERA重要密码学习一
  14. WinZip for Mac注册版
  15. 在线协同编辑excel系统
  16. 单片机c语言课后题答案,单片机原理及应用(C语言版)习题答案.doc
  17. 微服务中的服务发现是什么?
  18. xiunobbs 4 mysql_xiunobbs
  19. access表达式的用法
  20. Centos7+LAMP

热门文章

  1. 北交中外合作计算机类出国留学,北交大中外合作办学怎么样
  2. 【Security】可信网络连接
  3. 网页视频播放插件ckplayer的使用-详细介绍
  4. 关于51/STC单片机中断优先级的调整
  5. 单点登录-基于JWT机制的单点登录
  6. linux ip_tos,IP_TOS选项
  7. python opencv2 将两张图片合并为一张
  8. 幼儿教师计算机word知识点,幼儿园教师计算机培训计划
  9. NO7.const和volatile
  10. vcs的加密protect