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 相关文章推荐
探讨js字符串数组拼接的性能问题
Oct 11 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 Javascript
详解vue跨组件通信的几种方法
Jun 15 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
Jun 23 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
Mar 14 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
Nov 20 Javascript
小程序从手动埋点到自动埋点的实现方法
Jan 24 Javascript
bootstrap中的导航条实例代码详解
May 20 Javascript
微信小程序 下拉刷新及上拉加载原理解析
Nov 06 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
Apr 28 Javascript
vue实现员工信息录入功能
Jun 11 Javascript
nestjs返回给前端数据格式的封装实现
Feb 22 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
微信接口生成带参数的二维码
2017/07/31 PHP
js静态作用域的功能。
2006/12/25 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
python机器学习库常用汇总
2017/11/15 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
python3实现逐字输出的方法
2019/01/23 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
Python实现弹球小游戏
2020/08/01 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
幼儿园亲子活动方案
2014/01/29 职场文书
开学季活动策划方案
2014/02/28 职场文书
兴趣小组活动总结
2014/05/05 职场文书
助学金感谢信
2015/01/20 职场文书
区域经理岗位职责
2015/02/02 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
换届选举主持词
2015/07/03 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
Mysql数据库group by原理详解
2022/07/07 MySQL