循环1:
下面代码运行结果是输出10
 
 <script>
var a =[];
for(var i = 0;i<10;i++){
a[i] = function(){
console.log(i);
}
}
a[6]();
</script>
循环2:
下面代码运行的结果输出的是9
 
 <script>
var a;
for(let i = 0;i<10;i++){
a= function(){
console.log(i);
}
}
a();
</script>
  
 
为什么呢?
循环1:
原因是循环1中var定义的i 实在全局变量中,所以在整个循环的i 都是同一个变量的自增,所以等到i增加到10的时候就不符合条件,但是i=10还是存在与变量堆(内存空间)里面
所以在调用a[6]时候,符合循环条件,但是此时的i已经是自增到10了,在内存中的值也就是10了,所以输出的a[6] 中function 输出的i也就是10了。
提示:这也就是调用a[i] 其中i是 10以内的数的时候,都会输出10的原因
 
 
循环2:
原因是let是es6中的变量,作用是让变量唯一,也就是在循环中let定义的每个i都是独立的,也就是循环结束后有0到9共十个变量 i,而在i=10不符合循环条件的时候,i=10也就不存在于内存里面,所以最大的是i=9的时候,
提示:这也就是a();输出循环最后的值是9的原因
 
 
 
 
 
 

var与let循环中经典问题的更多相关文章

  1. let和var在for循环中的不同表现

    var声明变量: var只有函数作用域,没有块级作用域 //函数作用域的表现 function test(){ var i =10; console.log(i); } test(); console ...

  2. 对于for循环中使用let或var时,i的作用域范围的记录

    在for循环中使用let时,结果如下 for内部定义的i在循环结束后不会覆盖外部的i 在for循环中使用var,且不控制i的作用域时,结果如下 第一个for循环内部定义的i并不会创建,而是直接使用外部 ...

  3. 三. var let const的理解 以及 立即执行函数中的使用 以及 for循环中的例子

    一. 立即执行函数 windows中有个name属性,name='' '' var 如果我们用var name 去声明,那就会改变windows中name的值(因为我们不是在函数作用域中声明的,所以会 ...

  4. 深入浅出:了解for循环中保留i值得方法

    一.保留i值  通常情况下,因为一些效果我们需要获取到for循环中的i的值,但是往往拿到的都是最后一个i的值.下面介绍几种方法可以获取到i的值 1.自定义属性: arr[i].index = i; 以 ...

  5. js for 循环中的 变量问题。

    今日处理项目中的一个循环,本来就是一个小小的for循环,后来发现该段程序出现了问题,仔细检查代码没有发现其中的错误.无奈只好叫来了老大帮忙.通过在模版中断点调试(该方式只能自己写debugger断点) ...

  6. js模版引擎handlebars.js实用教程——循环中使用索引

    <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content="text/ ...

  7. Handlebars.js循环中索引(@index)使用技巧(访问父级索引)

    使用Handlebars.js过程中,难免会使用循环,比如构造数据表格.而使用循环,又经常会用到索引,也就是获取当前循环到第几次了,一般会以这个为序号显示在页面上. Handlebars.js中获取循 ...

  8. jsrender-for循环中访问父属性

    jsrender中使用for循环数据时有时需要访问父级数据. 而jsrender在循环中的父级数据存放在隐藏属性parent.parent.data中,使用案例如下 {{:#parent.parent ...

  9. JQuery在循环中绑定事件的问题详解

    JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" nam ...

随机推荐

  1. Odoo加载机制指导流程

    Odoo的启动通过openerp-server脚本完成,它是系统的入口. 然后加载配置文件openerp-server.conf 或者 openerp_serverrc: openerp-server ...

  2. jdk不同版本的垃圾收集器

  3. LUOGU P2296 寻找道路 (noip 2014)

    传送门 解题思路 首先建一张反图,从终点dfs出哪个点直接或间接相连,然后直接跑最短路,跑的时候判断一下所连的点是否与终点相连. 代码 #include<iostream> #includ ...

  4. python 日记 day4

    1.为何数据要分类 数据是用来表示状态的,不同的状态应该用不同类型的数据来表示. 2.数据类型 数字 字符串 列表 元组 字典 集合 列表:列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大 ...

  5. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---观察者模式之WeatherReport[转]

      1   2{<HeadFirst设计模式>之观察者模式 }   3{ 主题与观察者                    }   4{ 编译工具 :Delphi7.0          ...

  6. MySQL时间格式转换

    1.时间转换成特定字符串 例:select DATE_FORMAT(now(),'%Y-%m-%d %H:%i::%s'); --> '2019-10-16 10:59::18' 2.一种字符串 ...

  7. select2下拉内容获取后台数据

    controller(id给select:text给另外的input框) @RequestMapping(value = "findUnit")public @ResponseBo ...

  8. IO流 输入和输出文档内容

    package io; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io. ...

  9. 2019-4-6-VisualStudio-编码规范工具-2.6-修改当前文件编码

    title author date CreateTime categories VisualStudio 编码规范工具 2.6 修改当前文件编码 lindexi 2019-04-06 15:31:53 ...

  10. Javascript-简单的计时钟表

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...