前言:

我们在ES5都使用var来声明常量跟变量,ES6使用了最新的语法,使用let跟const分别声明。
一、let命令:

let命令是用于声明变量
块级作用域

1、

{
let a = 10;
var b = 10;
}
console.log(a); // ReferenceError: a is not defined.
console.log(b); // 10

a未定义,是因为let只是在它所在的块作用域执行。{}为块作用域。而b没有影响。

2、

for (let i = 0; i < 3; i++) {
let i=‘abc’ ;
console.log(i);
}

会打印三个abc,因为循环条件上i是使用let定义的,循环体内的i也是let定义的。这两处的i处在各自独立的作用域里,互不影响。

for (var i = 0; i < 3; i++) {
var i=‘abc’ ;
console.log(i);
}

而这个用var声明的只打印一次abc,是因为这个循环体里的i跟外部的i是存在于同一个作用域,相当于在全局定义了一次i。

for (var i = 0; i < 3; i++) {
let i=‘abc’ ;
console.log(i);
}

这里我在内部使用let声明的,虽然外部是用var声明的,但是这样也把两个变量划分成了两个不同的作用域。同样打印出三次abc。
3、

var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a6; // 10

我们先来看这个,这个大家肯定很熟悉,a[6]输出的是10。是因为变量i是var命令声明的,在全局范围内都有效。a[i]中的i和console.log(i)都是指向全局变量的i。所以a[6]输出的是循环后最后一轮的值。不管a[i]中i取得什么值,都会输出的是10,

var a = [];
var i;
for (i = 0; i < 10; i++) {
a[i]=function () { console.log(i); };
}
a6; // 10

就相当于在上面的代码,在全局声明一个i,

var a = [];
var j;
for (i = 0; i < 10; i++) {
a[j]=function () { console.log(i); };
}
aj; // 10

一定要记住调用的一定是具体的值或者变量。

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/119882370

《ECMAScript 6 入门》【一、let、const命令】(持续更新中……)的更多相关文章

  1. ECMAScript 6入门 - let和const命令

    详细学习链接: http://es6.ruanyifeng.com/#docs/let let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命 ...

  2. Linux常用命令(持续更新中)

    cd 目录名 :进入某个目录 ls :列出当前目录的内容 locate 文件名/目录名:寻找文件.目录 find 目录名1 -name 文件名/目录名2 :在目录1中寻找目录2 whereis  文件 ...

  3. Linux 基础命令 持续更新中...

    1.ls 显示当前文件/文件夹 显示文件大小: ls -lh  显示隐藏文件: ls -a 显示文件详细信息: ls -l (ll)2.pwd 显示当前所在路径 cat 显示当前文件下所有内容3.cd ...

  4. 常用的几个Dos命令-持续更新中

    1.服务相关 (1).查看服务 C:\Windows\system32>net start 已经启动以下 Windows 服务: (2).启动服务 C:\Windows\system32> ...

  5. [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

    linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...

  6. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  7. 【github&&git】4、git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  8. 前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中

    写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...

  9. java视频教程 Java自学视频整理(持续更新中...)

    视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...

  10. 2020年腾讯实习生C++面试题&持续更新中(1)

    2020年腾讯实习生C++面试题&持续更新中(1) 腾讯面试整理(1) 最近大三的学生找实习生的同学非常多,给大家分享一篇腾讯实习生的面试题,关于面试题,会持续更新~~~ 也算是今天开通博客的 ...

随机推荐

  1. kubectl scale 一次缩容调整过程

    查看master环境相关信息一.版本信息 [root@master-web-38 ~]# kubectl versionClient Version: version.Info{Major:" ...

  2. Java学习day32

    生产与消费者问题:假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者从仓库中取走产品:如果仓库中没有产品,生产者就将产品放入仓库,否则就停止生产等待:如果仓库中有产品,消费者就取走,否 ...

  3. Angular中directive——scope选项与绑定策略,这个也经常迷惑的。

    开门见山地说,scope:{}使指令与外界隔离开来,使其模板(template)处于non-inheriting(无继承)的状态,当然除非你在其中使用了transclude嵌入,这点之后的笔记会再详细 ...

  4. nginx wordpress安装

    BEGIN; 最近在弄wordpress,然后环境是centOS6.3,使用nginx做web服务器. 经过一系列安装,nginx.mysql.php都安装成功了,然后在配置nginx访问wordpr ...

  5. python学习-Day34

    目录 今日内容详细 作业讲解 客户端 服务端 UDP协议 实现 服务器端 客户端 基于UDP实现简易版本的qq 客户端 服务器端 操作系统的发展史 第一代计算机(1940~1955) 第二代就算机(1 ...

  6. “如何实现集中管理、灵活高效的CI/CD”研讨会报名即将截止

    如何实现集中管理.灵活高效的CI/CD ZOOM中文在线研讨会将于 2022年3月29日,星期二,下午3:00-5:00, 也就是 明天 举行, 如果您还未注册,点击按钮,立即注册此次研讨会(注册即可 ...

  7. 1.SSH协议学习笔记

    一.SSH介绍 介绍: SSH全称是Secure Shell,安全外壳协议. 端口号:22: 如何查看服务端口号: grep ssh /etc/services netstat -antup | gr ...

  8. JavaScript 数据结构与算法1(数组与栈)

    学习数据结构的 git 代码地址: https://gitee.com/zhangning187/js-data-structure-study 1.数组 几乎所有的语言都原生支持数组类型,因为数组是 ...

  9. spring 拦截器流程 HandlerInterceptor AsyncHandlerInterceptor HandlerInterceptorAdapter

    HandlerInterceptor源码 3种方法: preHandle:拦截于请求刚进入时,进行判断,需要boolean返回值,如果返回true将继续执行,如果返回false,将不进行执行.一般用于 ...

  10. 关于div及display

    1.DIV div被看作是一个盒子,可以设置width.height.这个盒子其实是由三部分构成width(height).padding.border.在默认情况下,所见到的div是border和p ...