首页 > 其他分享 >let是es6中声明变量的方式,有自己的作用域块,可以放变量,所以let绑定for循环时,每个i都有自己的值.

let是es6中声明变量的方式,有自己的作用域块,可以放变量,所以let绑定for循环时,每个i都有自己的值.

时间:2023-11-11 12:22:55浏览次数:29  
标签:es6 变量 作用域 循环 let 事件队列

for(let i=0;i<2;i++){
    setTimeout(function(){
    console.log(i)
    },100);
}
for(var i=0;i<2;i++){
    setTimeout(function(){
        console.log(i)
    },100);
}

问:控制台打印的结果是?
0 1 2 2

① Js是单线程的,Settimeout是异步宏任务,所以代码执行遇到异步的,就放在事件队列中的,等线程中的任务执行完后才会执行事件队列中的任务。

② let是es6中声明变量的方式,有自己的作用域块,可以放变量,所以let绑定for循环时,每个i都有自己的值. 在这个for循环中就是满足一次条件向事件队列中添加一个打印i的事件,且每个事件中的i有自己的值

③ Var没有作用域块,for循环的变量就会后一个覆盖前一个,当循环完毕时i就只有一个值,又因为for循环的判断条件是不满足跳出,所以i最后是2而不是1

④ 这些完了后执行事件队列中的任务,就打印了0122

标签:es6,变量,作用域,循环,let,事件队列
From: https://www.cnblogs.com/longmo666/p/17825774.html

相关文章

  • 下列代码存在几个变量没有被回收?( )
    下列代码存在几个变量没有被回收?()vari=1;vari=2;varadd=function(){vari=0;returnfunction(){i++;console.log(i);}}();add();3个1:全局变量i不会被回收2:全局变量add不会被回收3:闭包引用的局部变量i不会被回收代码回收......
  • 【3.0】Go语言语法初识之变量
    【零】注释语法注释就是对代码的解释和说明,其目的就是让人们更加轻松的了解代码。注释是开发人员的一个重要的习惯。单行注释使用//开头多行注释使用/*开头*/结尾//package定义包名main包名packagemain//import引用库fmt库名import"fmt"//func定......
  • CompletableFuture 学习
    创建异步任务CompletableFuture创建异步任务,一般有supplyAsync和runAsync两个方法supplyAsync执行CompletableFuture任务,没有返回值//使用默认内置线程池ForkJoinPool.commonPool(),根据supplier构建执行任务publicstatic<U>CompletableFuture<U>supplyAsync(Suppli......
  • kubeadm部署的k8s证书过期问题 k8s问题排查:the existing bootstrap client certifica
     解决问题:估计跟移动有关,下面那个没解决问题,是因为在原有文件的基础上修改的吧?而这里直接是移走,重新生成了新的。不太清楚是不是这个原因。$cd/etc/kubernetes/pki/$mv{apiserver.crt,apiserver-etcd-client.key,apiserver-kubelet-client.crt,front-proxy-ca.crt,front......
  • JMeter进阶使用变量及BeanShell 预处理程序实现复杂调试
    JMeter进阶使用变量及BeanShell预处理程序实现复杂调试有一些测试需要做一些预处理程序才能做http请求,在JMeter下可以通过使用参数+BeanShell预处理程序加工后再发起请求即可。例oauth服务需要通过username,password,client_id,client_secret,grant_type进行请求,这里的密码涉及安......
  • 无涯教程-批处理 - Deleting from the Registry函数
    通过REGDEL命令从注册表中删除,请注意,为了从注册表中删除值,您需要在系统上具有足够的特权才能执行此操作。REGDELETE命令具有以下变体,在第二个版本中,将删除默认值,而在最后一个版本中,将删除指定键下的所有值。REGDELETE[ROOT\]RegKey/vValueName[/f]REGDELETE[ROOT......
  • 无涯教程-批处理 - Deleting Folders函数
    对于删除文件夹,批处理脚本提供了DEL命令。DEL[/P][/F][/S][/Q][/A[[:]attributes]]names以下是可以提供给DEL命令的选项的说明。S.No.Options&描述1.Names指定一个或多个文件或目录的列表,通配符可用于删除多个文件,如果指定了目录,则目录中的所有文件将被删除。2......
  • get、post、put、delete、patch的区分
    HTTP定义了与服务器不同的交互方法,常见的方法有4种,分别是GET、POST、PUT、DELETE;而PATCH是后来新增的方法。相关基本概念幂等幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执......
  • 银河麒麟系统下openjdk安装及环境变量设置
    1、openjdk安装:A、检查java版本,终端命令:java-versionB、更新麒麟系统软件包列表,终端命令:sudoaptupdate查看列表 -->:aptlist  升级C、银河麒麟桌面环境提供了OpenJDK作为Java的官方实现(default-jdk,openjdk-11-jdk,openjdk-17-jdk等版本),终端命令:sudoa......
  • C++中的const成员变量和成员函数
    在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const可以用来修饰成员变量和成员函数。const成员变量const成员变量的用法和普通const变量的用法相似,只需要在声明时加上const关键字。初始化const成员变量只有一种方法,就是通过构造函数的初始化列表,这点在......