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 相关文章推荐
jquery 应用代码 方便的排序功能
Feb 06 Javascript
从盛大通行证上摘下来的身份证验证js代码
Jan 11 Javascript
给文字加上着重号的JS代码
Nov 12 Javascript
禁止页面刷新让F5快捷键及右键都无效
Jan 22 Javascript
JQuery与JS里submit()的区别示例介绍
Feb 17 Javascript
javascript的列表切换【实现代码】
May 03 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
微信小程序网络请求的封装与填坑之路
Apr 01 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
对于input 框限定输入值为浮点型的js代码
Sep 25 Javascript
node中使用es6/7/8(支持性与性能)
Mar 28 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 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
source.php查看源文件
2006/12/09 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
php进程间通讯实例分析
2016/07/11 PHP
js 分栏效果实现代码
2009/08/29 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
React实现全选功能
2020/08/25 Javascript
python 获取文件列表(或是目录例表)
2009/03/25 Python
常用python数据类型转换函数总结
2014/03/11 Python
Python实现的凯撒密码算法示例
2018/04/12 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
廉洁家庭事迹材料
2014/05/15 职场文书
大学生学习计划书
2014/09/15 职场文书
庆祝教师节标语
2014/10/09 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
高三复习计划
2015/01/19 职场文书
孝女彩金观后感
2015/06/10 职场文书
MySQL实现配置主从复制项目实践
2022/03/31 MySQL
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers