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 相关文章推荐
lib.utf.js
Aug 21 Javascript
js 实现复制到粘贴板的功能代码
May 13 Javascript
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
3款实用的在线JS代码工具(国外)
Mar 15 Javascript
jquery css 设置table的奇偶行背景色示例
Jun 03 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
深入分析Cookie的安全性问题
Mar 01 Javascript
纯js和css完成贪吃蛇小游戏demo
Sep 01 Javascript
jQuery查找节点方法完整实例
Sep 13 Javascript
js实现表格筛选功能
Jan 18 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
使用javascript函数编写简单银行取钱存钱流程
May 26 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
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
php短址转换实现方法
2015/02/25 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
Python如何实现守护进程的方法示例
2017/02/08 Python
PyQt5每天必学之组合框
2018/04/20 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Pytorch 实现权重初始化
2019/12/31 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
运动会通讯稿100字
2014/01/31 职场文书
迎新晚会主持词
2014/03/24 职场文书
煤矿安全协议书
2014/08/20 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
小学见习报告
2014/10/31 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
实验心得体会范文
2016/01/25 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers