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 相关文章推荐
struts2 jquery 打造无限层次的树
Oct 23 Javascript
javaScript call 函数的用法说明
Apr 09 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
Nov 22 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
Jun 09 Javascript
jquery访问ashx文件示例代码
Aug 11 Javascript
node.js中的path.basename方法使用说明
Dec 09 Javascript
JavaScript编写简单的计算器
Nov 25 Javascript
jQuery版本升级踩坑大全
Jan 12 Javascript
javascript实现数字倒计时特效
Mar 30 Javascript
JavaScript requestAnimationFrame动画详解
Sep 14 Javascript
mac上配置Android环境变量的方法
Jul 08 Javascript
vue实现点击隐藏与显示实例分享
Feb 13 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 源代码压缩小工具
2009/12/22 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
webpack打包非模块化js的方法
2018/10/24 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
JavaScript WeakMap使用详解
2021/02/05 Javascript
python threading模块操作多线程介绍
2015/04/08 Python
Python实现字典的key和values的交换
2015/08/04 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
pandas求两个表格不相交的集合方法
2018/12/08 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
python中open函数的基本用法示例
2019/09/07 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
Python创建简单的神经网络实例讲解
2021/01/04 Python
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
讲座主持词
2014/03/20 职场文书
留学生求职信
2014/06/03 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2014年校长工作总结
2014/12/11 职场文书
廉政承诺书2015
2015/04/28 职场文书
安全生产会议制度
2015/08/06 职场文书
关爱空巢老人感想
2015/08/11 职场文书
Python进程池与进程锁之语法学习
2022/04/11 Python