首页 > 其他分享 >js闭包和循环

js闭包和循环

时间:2024-02-21 23:11:52浏览次数:27  
标签:闭包 变量 js 循环 let var

for(var i = 1;i<=5;i++){
    setTimeout(function timer(){
        console.log(i);
    },i*1000);
}

以上代码输出都是6。因为整个过程中只有i一个变量,所有循环共享i变量,循环执行完毕(定时器执行之前)后i为6

for(var i = 1;i<=5;i++){
    let j = i;
    setTimeout(function timer(){
        console.log(j);
    },j*1000);
}

以上代码正常了输出1 2 3 4 5,因为每次循环中的j都是独立的

以上代码可以简洁一些:

for(let i = 1;i<=5;i++){
    setTimeout(function timer(){
        console.log(i);
    },i*1000);
}

i使用了let关键字后,每次迭代都会声明一个新的变量。输出位1 2 3 4 5

标签:闭包,变量,js,循环,let,var
From: https://www.cnblogs.com/dongfangchun/p/18026399

相关文章

  • 闭包-保证你看看明明白白
    闭包闭包官方的解释:闭包(closure)是一个函数以及其捆绑的周边环境状态(词法环境)的引用的组合。也就是说:闭包让开发者可以从内部函数访问外部函数的作用域。在JavaScript中,闭包会随着函数的创建而被同时创建。上面这3句话是mdn的解释。太复杂了。笨笨的我理解不了。我的理解:闭......
  • js 基础知识
     01-数据类型值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。02-检测数据类型2.1-typeof<!DOCTYPEhtml><ht......
  • windows安装bun.js
    1.下载bun可执行文件,地址如下https://github.com/oven-sh/bun/releases/download/canary/bun-windows-x64.zip 2.解压到D盘修改文件夹名为bun并且创建快捷方式 3.增加环境变量 4.验证  bun--help&bun-v......
  • 闭包及原理
    概念一个函数和对其周围状态(lexicalenvironment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。大白话也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域点击查看代码functionfn(){vara=10returnfunctiongetData(){......
  • H5无插件流媒体播放器EasyPlayer.js集成后不能自动播放是什么原因?
    流媒体播放器EasyPlayer是TSINGSEE青犀流媒体组件系列中关注度较高的产品,经过多年的发展和迭代,目前已经有多个应用版本,包括RTSP版、RTMP版、Pro版,以及js版,其中js版本作为网页播放器,受到了用户的广泛使用。在功能上,EasyPlayer支持直播、点播、录像、快照截图、MP4播放、多屏播放、......
  • Shell中for循环的使用
    摘抄自 https://www.python100.com/html/Z32C4LDHO470.htmlfor循环是Shell中最常用的循环方式之一,可以循环遍历一个给定的列表。在遍历目录时,我们可以使用for循环来遍历当前目录下的所有文件和文件夹。以下是一个示例代码:echo"当前目录下的文件和文件夹:"forfilein*;d......
  • 2024-02-21 js 工具类(一行代码)
    1.获取浏览器Cookie的值constcookie=name=>`;${document.cookie}`.split(`;${name}=`).pop().split(';').shift();cookie('_ga');//Result:"GA1.2.1929736587.1601974046"2.将RGB转换为十六进制constrgbToHex=(r,g,b)=>&......
  • selenium执行js与浏览器操作
    执行js前置准备importtimefromseleniumimportwebdriverfromselenium.webdriver.edge.serviceimportServiceser=Service()ser.path=r'D:\xxx\chromedriver.exe'bro=webdriver.Chrome(service=ser)bro.get("https://www.baidu.com")#隐士......
  • JS 中的二进制 - Blob 与 ArrayBuffer
    零、参考资料《图解+实战》File、Blob、TypedArray、DataViewJavaScript也有操作二进制的一天:聊ArrayBuffer和Blob聊聊JS的二进制家族:Blob、ArrayBuffer和Buffer一、定义宏观:Blob-表示一个不可变、原始数据的类文件对象,可读不可写微观:ArrayBuffer-表示通用的原始......
  • RxJS中高阶映射操作符的全面讲解:switchMap, mergeMap, concatMap (and exhaustMap)
    原文链接:https://blog.angular-university.io/rxjs-higher-order-mapping/有一些在日常开发中常用的RxJS的操作符是高阶操作符:switchMap,mergeMap,concatMap,以及exhaustMap。举个例子,程序中大多数的网络请求都是通过以上某个操作符来完成的,所以为了能够写出几乎所有反应式编程,必须......