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 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
Prototype中dom对象方法汇总
Sep 17 Javascript
ExtJS Window 最小化的一种方法
Nov 18 Javascript
JavaScript setTimeout和setInterval的使用方法 说明
Mar 25 Javascript
js实现照片墙功能实例
Feb 05 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
Aug 25 Javascript
新闻上下滚动jquery 超简洁(必看篇)
Jan 21 Javascript
面试常见的js算法题
Mar 23 Javascript
js用类封装pop弹窗组件
Oct 08 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 Javascript
React Native 搭建开发环境的方法步骤
Oct 30 Javascript
Node.js安装详细步骤教程(Windows版)详解
Sep 01 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及Zend Engine的线程安全模型分析
2011/11/10 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
Python发送http请求解析返回json的实例
2018/03/26 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
python用for循环求和的方法总结
2019/07/08 Python
Django单元测试工具test client使用详解
2019/08/02 Python
在pycharm中显示python画的图方法
2019/08/31 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
几个Shell Script面试题
2012/08/31 面试题
应届生煤化工求职信
2013/10/21 职场文书
化学实验员岗位职责
2013/12/28 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
婚庆公司计划书
2014/09/15 职场文书
七一建党节慰问信
2015/02/14 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书