es6的块级作用域通俗的讲就是一对花括号中的区域(声明对象的花括号不是块级作用域),块级作用域可以嵌套。

let

1、le声明的变量只在当前(块级)作用域内有效。

2、let声明的变量不能被重复声明。否则同一作用域下会报错,不同块级作用域可以定义同名变量。

3、let不存在变量提升。先打印再声明会报错。

关于暂存死区(了解即可):

1、用var时会从上到下按顺序打印。

2、一般会往上级作用域去找,但用 let 时在es6中向上找到了同一个变量也是拿不到的。因为es6规定如果块级作用域中存在let、const声明的变量,这个变量一开始就会形成一个封闭的作用域。

            var monkey = 'houzi';
{
console.log(monkey); //houzi
var monkey = 'little';
}
console.log(monkey); //little let m = 'houzi';
{
console.log(m); //报错m is not defined
let m = 'little';
}
console.log(m);

const

1、声明常量:const c = '我是常量'

2、常量必须在声明的时候被初始化(即赋值)

3、常量不能重复声明、不存在提升、只能在当前(块级)作用域内有效

4、一旦声明常量,就不能改变(引用类型需要冻结)。但是当常量为引用类型的时候,不能保证不改变;当const声明的值为引用类型(对象、数组、函数)时,const只能保证声明的常量地址不变,不能保证地址上的值不去发生改变。const只能保证指向或引用的地址是不变的。

5、使用const声明时,使用小写字母也不会报错,不过大家一般会使用大写字母。

Object.freeze(const)方法可以冻结对象,使其失去被修改的能力(即不能被扩展了)。冻结后的修改会失效,对象的属性依旧为修改之前的。

冻结对象后扩展属性不会报错,冻结数组后扩展属性会报错。这是规定好的。

es6之前使用Object.defineProperty(obj,name,value)方法设置常量对象的属性为不可被修改,再使用Object.seal(对象名)方法设置对象属性不可被扩展。

ES6基础之let、const的更多相关文章

  1. 2. ES6基础-let和const命令

    目录 1. let命令 1.1 用法 1. 2 不存在变量提升 1.3 区域绑定 1.4 不允许重复声明 2. const命令 2.1 用法 2.2 与let类似的特性 2.3 const本质 2.4 ...

  2. ES6基础入门之let、const

    作者 | Jeskson来源 | 达达前端小酒馆 01 首先呢?欢迎大家来学习ES6入门基础let,const的基础知识内容.初始ECMA Script6. ESMAScript与JavaScript ...

  3. ES6 基础

    转载自:ES6 基础 一.新的变量声明方式 let/const 与var不同,新的变量声明方式带来了一些不一样的特性,其中最重要的两个特性就是提供了块级作用域与不再具备变量提升. 通过2个简单的例子来 ...

  4. 新手必看ES6基础

    ES6 基础 一.新的变量声明方式 let/const 与var不同,新的变量声明方式带来了一些不一样的特性,其中最重要的两个特性就是提供了块级作用域与不再具备变量提升. 通过2个简单的例子来说明这两 ...

  5. 【C++自我精讲】基础系列二 const

    [C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...

  6. es6(一):es6介绍以及let,const

    es是js的规范,而js是具体实现 将es6转化为es5代码工具:运用的多的是babel 在线转换地址:babel,traceur(属于谷歌)   1.let申明变量:let其实可以完全取代var,并 ...

  7. (三)ES6基础语法。。。freecodecamp笔记

    ECMAScript6 ECMAScript 是 JavaScript 的标准化版本,它旨在统一语言的规范和功能.所有主流的浏览器或者 Javascript 的运行环境都支持这个规范,因此 ECMAS ...

  8. ES6 基础知识-----简记 let const

    ES5中只有函数作用域和全局作用域,声明变量使用var,在es6中添加声明变量 let const let 声明块级作用域变量, let 不存在变量提升 var命令会发生”变量提升“现象,即变量可以在 ...

  9. 【ES6基础】let、const命令和变量的结构赋值

    ES5声明变量(2):var .function ES6声明变量(6):var.function.let.const.import和class 1.let命令和const命令 (1)let和const ...

  10. ES6 - 基础学习(2): 新的变量声明方式 let 与 const

    ES6)新增加了两个重要的 JavaScript 关键字:let 和 const.以前声明变量时只有一种方式:var,ES6对声明方式进行了扩展,现在可以有三种声明方式了. 1.var:variabl ...

随机推荐

  1. SpringBoot | 3.1 配置数据源

    目录 前言 1. 数据源的自动配置 2. *数据源自动配置源码分析 2.1 DataSourceAutoConfiguration:数据源自动配置类 2.2 JdbcTemplateAutoConfi ...

  2. 前端基础html(二)

    一.html的概念 1.概念:超文本标记语言. 2.超文本,超链接:超级不仅有文本,图片,还有音频,视频等. 3.html:作用:   显示服务器端的响应结果. 二.互联网三大基石 1.url:统一资 ...

  3. git 强推本地分支覆盖远程分支

    git 强推本地分支覆盖远程分支git push origin 分支名 --force

  4. 基于小熊派Hi3861鸿蒙开发的IoT物联网学习【三】

    软件定时器:是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的Tick时钟计数值后会触发用户定义的回调函数.定时精度与系统Tick时钟的周期有关. 定时器运行机制: cmsis_os2的A ...

  5. mongodb(27017、28017)未授权访问

    重启docker systemctl restart docker.service 下载mingodb docker pull mongo:3.6 列出镜像 docker images mongo 创 ...

  6. 大数据学习(20)—— Zookeeper介绍

    ZooKeeper是什么 就像相声大师冯巩每次出场都说:"亲爱的观众朋友们,我想死你们啦"一样,我再强调一次,学习大数据官网很重要.Zookeeper官网看这里ZooKeeper ...

  7. CreatFile打开驱动失败

    使用  CreateFile(DRIVER_PATH, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_AT ...

  8. [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码

    [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码 更坏的阅读体验 定义 对于给定的一个网络,有向图中每个的边权表示可以通过的最大流量.假设出发点S水流无限大,求水流到终点T后的最大流量. 起 ...

  9. Java面向对象08——继承

    继承  package oop.demon01.demon05; ​ // Person 人 ---- 父类 public class Person {     //public     //prot ...

  10. goproxy.io

    goproxy.io 是全球最早的 Go modules 镜像代理服务之一, 采用 CDN 加速服务为开发者提供依赖下载, 该服务由一批热爱开源, 热爱 Go 语言的年轻人开发维护.从 Go 1.11 ...