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实现的使用键盘控制人物走动实例
Aug 27 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
Dec 10 Javascript
浅谈JavaScript Math和Number对象
Jan 26 Javascript
举例讲解Node.js中的Writable对象
Jul 29 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
Nov 03 Javascript
javascript用正则表达式过滤空格的实现代码
Jun 14 Javascript
Vue.js每天必学之Class与样式绑定
Sep 05 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
Jul 12 Javascript
最实用的JS数组函数整理
Dec 05 Javascript
从零开始搭建一个react项目开发
Feb 09 Javascript
微信小程序实现顶部导航特效
Jan 28 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
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
python获取豆瓣电影简介代码分享
2014/01/16 Python
python实现的udp协议Server和Client代码实例
2014/06/04 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
Python 文件操作的详解及实例
2017/09/18 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
python的移位操作实现详解
2019/08/21 Python
Python笔记之facade模式
2019/11/20 Python
python名片管理系统开发
2020/06/18 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
化妆品店促销方案
2014/02/24 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python