let命令

  • 用于声明变量,但是声明的变量只能在let命令所在的代码块内有效,

      {
    let a = 10;
    var b = 1;
    }

    其中,a在代码块的外部是调用不到的。对于for循环的计数器里面,就很适合let命令。

  • 不存在变量声明

    let不像var一样有变量声明,所以变量一定要在声明后使用。

  • 暂时性死区

    只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外境影响。

          var  tmp = 123;
    if(ture){
    tmp = "axs";//error
    let tmp;
    }
    在代码内,使用let命令声明变量之前,该变量都是不可用的。这在语法上称为“暂时性死区”。es6这样规定,主要是为了减少运行时错误,防止在变量声明前使用这个变量,从而导致意料之外的行为。暂时性死区的本质就是,只要进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用变量。
  • 不允许重复声明

    let不允许在相同的作用域内重复声明同一个变量。

块级作用域

  • es5只有全局作用域和函数作用域,没有块级作用域,这带来了很多不合理的场景。如:内层变量可能会覆盖外层变量;用来计数的循环变量会泄露为全局变量。

      function fl(){
    let n = 5;
    if(ture){
    let n = 10;
    }
    console.log(n);//5
    }

如果使用var,则会输出10。除此之外,es6还允许块级作用域任意嵌套。

const命令

const用来声明常量,一旦声明,他的值就不可以改变。而且,一旦声明,就必须立即被初始化,不能留到后面去赋值。他的作用域也只能在声明所在的块级作用域内有效。没有变量提升,同样存在暂时性死区,只能在声明后使用。

补充:跨模块常量:采用下面下法:
     export const A=1

ES6-let命令的更多相关文章

  1. ES6之命令妙用

     很多人都听说过ES6(也就是ECMAScript的新一代标准)并且对她充满了向往,下面通过一个ES6中小知识点——let命令,来解开她的神秘面纱,让大家初步认识一下ES6的语法规范.        ...

  2. JS ES6 -- let命令

    1.ES6新增了块级作用域的let和const 这新特性let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. for循环的计数器,就很合适使用let命令 ...

  3. ES6 新增命令

    let               用来声明变量.它的用法类似于var,但是所声明的变量, 只在let命令所在的代码块内有效. 例: {var a=10; let b=20;}; console.lo ...

  4. 【ES6】let 命令

    let命令 为es6新增命令,用来声明变量,类似于var,但是let所声明的变量,只在let命令所在的块级作用域内有效 块级作用域写法(ES6块级作用域允许任意嵌套): // 块级作用域写法 { le ...

  5. React相关:npm,ES6,

    1.NPM: 参考:npm使用入门  npm 学习笔记整理 2.ES6参考:ES6 let命令:ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块 ...

  6. ES6 快速开始

    Refs 现代框架 Vue React 都使用到了 ES6 (包括D3js) [常量] // ES5 中常量的写法 Object.defineProperty(window, "PI2&qu ...

  7. es6的let与const

    es6新增命令let,用于声明变量,他与var的不同主要有三点: let有块级作用域 let没有变量提升 同级作用域内,let不可以重复定义 let有块级作用域: es5 for(var i=0;i& ...

  8. Vue2.0+Node.js+MongoDB全栈打造商城系统 免费下载

    <ignore_js_op> 课程目录||--第01章 课程介绍|    01-01 课程-导学.mp4|    01-02 前端框架回顾.mp4|    01-03 vue概况以及核心思 ...

  9. 【Web前端】用CSS3实现弹幕

    初版 用css3来实现弹幕确实比较简单,只需要设置动画让弹幕从屏幕右侧移动到屏幕左侧即可,一开始是这样实现的 .danmu { position: fixed; left: %; animation: ...

  10. 学习Karma+Jasmine+istanbul+webpack自动化单元测试

    学习Karma+Jasmine+istanbul+webpack自动化单元测试 1-1. 什么是karma?  Karma 是一个基于Node.js的Javascript测试执行过程管理工具.该工具可 ...

随机推荐

  1. DBProxy 入门到精通系列(一):DBProxy概述

    DBProxy概述 DBProxy是支持分库分表,读写分离的中间件,博客内容除了阅读github官方文档外,还会附加上本人个人测试的结果,但了解一个中间件,需要对这个中间件有一个基本的认识,方便控制. ...

  2. CentOS 7.4系统优化/安装软件

    源改为国内源 阿里云yum源 https://opsx.alibaba.com/mirror 清华yum源 https://mirrors.tuna.tsinghua.edu.cn/ 网易163yum ...

  3. PAT 1074 宇宙无敌加法器 (20 分)

    地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个 PAT 星人都必须熟记各位数字的进制 ...

  4. Linux三种网络

    Host-Only 桥接

  5. LeNet5

    Lecun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proc ...

  6. C# 函数4

    //数据库     public class GF_DA     {         /// <summary>         /// 执行SQL语句 sConnStr 连接字符串,sq ...

  7. python基础23 -----进程和线程

    一.进程 1.什么是进程? 1.1 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成. 1.2 程序是指进程需要完成那些功能以及如何完成. 1.3 数据集 ...

  8. bex5部署后不更新

    哪个模块没更新,就编译哪个模块 在x5/tools/compile下,运行对应模块的bat,并清空浏览器缓存 如果修改了.w文件,也可以删除相应的.catch文件夹 和.release文件夹,并且注意 ...

  9. java web数据库连接封装-simple

    package cn.cslg.bm.web.util; import java.sql.Connection; import java.sql.DriverManager; import org.a ...

  10. MIPI协议中文详解【转】

    本文转载自:http://www.voidcn.com/blog/michaelcao1980/article/p-6254588.html 一.MIPI MIPI(移动行业处理器接口)是Mobile ...