es6 for循环中let和var区别详解


Posted in Javascript onJanuary 12, 2020

let和var区别:

for(var i=0;i<5;i++){
  setTimeout(()=>{
    console.log(i);//5个5
  },100) 
}
console.log(i);//5
console.log('=============')

for(let j=0;j<5;j++){
  setTimeout(()=>{
    console.log(j);//0,1,2,3,4
  },100) 
}
console.log(j);//报错 j is not defined

为什么 用let就可以显示正确结果,而var就不可以呢?

var是全局作用域,有变量提升的作用,所以在for中定义一个变量,全局可以使用,循环中的每一次给变量i赋值都是给全局变量i赋值。

let是块级作用域,只能在代码块中起作用,在js中一个{}中的语句我们也称为叫一个代码块,每次循环会产生一个代码块,每个代码块中的都是一个新的变量j;

es6中不是说let声明变量不能重复声明吗?看下边例子:

{
  let a=123;
}
{
  let a=246;
}
console.log(a);//a is not defined;
{ 
  var b=1;
}
{ 
  var b=2;
}
console.log(b);// 2;

{}代表一个块,这个时候let声明的变量只在这个块中起作用,而这个块对var声明的变量不起作用。因为var是全局作用域。

let a=1;
let a=2;
//Uncaught SyntaxError: Identifier 'a' has already been declared
//let不能重复声明

let b=1;
var b=2;

// Uncaught SyntaxError: Identifier 'a' has already been declared
//let不能重复声明


var c=3;
var c=4;
console.log(c)//4;var可以重复声明

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
Oct 29 Javascript
javascript打印大全(打印页面设置/打印预览代码)
Mar 29 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
Apr 02 Javascript
angularjs自定义ng-model标签的属性
Jan 21 Javascript
Vuejs第十三篇之组件——杂项
Sep 09 Javascript
vue.js中$watch的用法示例
Oct 04 Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 Javascript
浅谈原生JS实现jQuery的animate()动画示例
Mar 08 Javascript
详解Angular2中Input和Output用法及示例
May 21 Javascript
vue循环数组改变点击文字的颜色
Oct 14 Javascript
vue实现购物车列表
Jun 30 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 Javascript
js 计数排序的实现示例(升级版)
Jan 12 #Javascript
JS实现动态无缝轮播
Jan 11 #Javascript
原生js实现无缝轮播图
Jan 11 #Javascript
JS实现轮播图效果
Jan 11 #Javascript
js实现带搜索功能的下拉框
Jan 11 #Javascript
js实现select下拉框选择
Jan 11 #Javascript
js实现二级联动简单实例
Jan 11 #Javascript
You might like
法压式咖啡之制作法
2021/03/03 冲泡冲煮
php a simple smtp class
2007/11/26 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
js精度溢出解决方案
2012/12/02 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
谈谈python垃圾回收机制
2020/09/27 Python
德国团购网站:Groupon德国
2018/03/13 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
政治学专业毕业生求职信
2014/08/11 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
python通过新建环境安装tfx的问题
2022/05/20 Python