ECMAScript与JavaScript的关系:ES是JS的标准,JS是ES的实现。
European Computer Manufactures Association欧洲计算机制造联合会。
浏览器对新标准的支持情况:http://kangax.github.io/compat-table/es6/

关于let
使用var声明或不声明直接使用变量时,本质上是往window对象上添加了属性。
let与var的主要区别:1,let声明的变量旨在当前(块级)作用域{}(对象的{}不算)内有效。2,let声明和const声明的变量不能被重复声明。3,不存在变量提升,不会把声明提前。4,如果块级作用域中存在let或者const声明的变量,这个变量一开始就会形成一个封闭的作用域,形成暂存死区。

在for中使用let时,for后面的括号内算是一个作用域,括号后面的{}算是括号作用域的子作用域。类似作用域的嵌套,第一层是括号内的,第二层是花括号内的{ { } }。

暂存死区:
let b = 14;
{
console.log(b);//报错。不会沿着作用域链查找,因为该作用域有了let声明的变量b,把该针对b变量,把该作用域封闭了,然后let又不会变量提升,提前声明,所以不存在b,所以报错。
let b =5;
}

{
let a = 1;
{
let b = 2;
console.log(a);//1
}
console.log(b);//报错
}

看不懂的话就自己动手试试!(自己对自己说的)

//js实现一个1-10的按钮点击弹出对应数字
//闭包
for (var i = 1; i < 11; i++) {(function (i) {var btn = document.createElement('button');btn.innerText = i;btn.onclick = function() {alert(i);}document.body.appendChild(btn);})(i);
}
//let
for (let i = 1; i < 11; i++) {var btn = document.createElement('button');btn.innerText = i;btn.onclick = function() {alert(i);}document.body.appendChild(btn);
}    

关于const

常量-不可改变的量。

常量必须在声明的时候赋值。否则报错。

与let类似的特性:

  不能重复声明,不存在变量提升,只在当前块级作用域内有效。

与let的区别:

  常量一旦声明就不可改变,但常量如果为引用类型的时候,不能保证不可变。

  实质上,const只能保证常量的地址不变,不能保证地址上的内容发生改变。

怎么防止常量为引用类型的时候能被修改的情况:

  Object.freeze(引用类型常量);


ES6之前怎么声明常量:1,var xx = xx;//假装是常量。2,Obejct.defineProperty(对象名,'属性名',{ value: '小明', writable: false });//往对象上添加属性,可添加描述,如能不能枚举,修改,配置。Object.seal(对象名);//防止对象被扩展,但是可以修改原有属性。两个结合。完成常量的效果。

使用for-in遍历对象的时候,会将原型上的方法也遍历一边,所以需要obj.hasOwnProperty(属性);//返回true的时候就是自身拥有的属性,而不是原型上拥有的属性。

以下代码自己封装了一个Object.freeze2()方法。
        Object.defineProperty(Object, 'freeze2', {//定义属性value: function(obj) {for ( var p in obj ) {if (obj.hasOwnProperty(p)) {Object.defineProperty(obj, p, {writable: false//不可修改属性});if ( typeof obj[p] === 'object' ) {Object.freeze2(obj[p]);}}}    Object.seal(obj);//防止对象属性的扩展}});var obj = {age: 55,obj2: {xx: 22,obj3: {ff: 233}}}Object.freeze2(obj);


 

转载于:https://www.cnblogs.com/zhonghonglin1997/p/10109792.html

ES6之let与const相关推荐

  1. 【ES6】 let与const详解

    [ES6] let与const详解 ES6,全称为ECMAScript6.ES6与js的关系是:前者是后者的规格,后者是前者的实现.换句话说,ES是js的国际化版本,js是ES的子集. 1. let ...

  2. ES6中使用let, const声明的变量, 在window对象下是获取不到的

    ES6中使用let, const声明的变量, 在window对象下是获取不到的 今天在写demo的时候发现, 使用let或者const声明的变量, 在window对象下使用this来获取发现获取不到 ...

  3. [OHIF-Viewers]医疗数字阅片-医学影像-es6解构赋值-const{}=-let{}=

    [OHIF-Viewers]医疗数字阅片-医学影像-es6解构赋值-const{}=-let{}= 解构赋值语法是一种 Javascript 表达式.通过解构赋值, 可以将属性/值从对象/数组中取出, ...

  4. es6(let与const命令)

    es6(let与const命令) 理论区别 var let const 在函数作用域内或者全局有效,没有块级作用域 只在let命令所在的代码块内有效 只在声明所在的块级作用域内有效 能重复声明 不能重 ...

  5. ES6之let和const

    进入前端领域工作将近两年,看过学习过很多大牛的文档和视频,2018年也打算对学过的知识点给出一个小结式的输出,从ES6开始吧. ES6新增 let 命令,用途是用来声明变量.一个新的事物被提出,总是有 ...

  6. 【ES6】let、const变量提升的验证,以及TDZ死区的理解

    前段时间在网上自学ES6,了解到ES6新增的let和const是存在变量提升的,但是由于TDZ(暂时性死区)的存在,在定义前访问会出现错误. 今天在腾讯课堂听老师讲ES6,多次强调let和const没 ...

  7. 【面试题】【ES6】let和const命令 (面试必看)

    给大家推荐一个实用面试题库 1.前端面试题库 (面试必备)            推荐:★★★★★ 地址:前端面试题库 1.let命令 基本用法 用法类似于var,但是所声明的变量,只在let命令所在 ...

  8. 关于ES6中let 和 const 命令的用法以及注意事项:

    let命令: 基本用法: let定义: 用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. <script> //let代码块内部定义的变量,与var ...

  9. ES6的let、const命令

    1.let命令: ES6 新增了let命令,用来声明变量.它的用法类似于var,但是 let 所声明的变量,只在let命令所在的代码块内有效.        代码如下: {let a = 1;var ...

  10. 【ES6 教程】第一章 新的ES6语法03—使用const 关键字定义常量

    英文 | https://www.javascripttutorial.net 翻译 | 杨小爱 在本教程中,我们将学习如何使用 JavaScript const 关键字定义常量. JavaScrip ...

最新文章

  1. C语言易错题--求最大公约数与最小公倍数之和(辗转相除法)
  2. 分布式缓存Redis Centos下单节点安装
  3. 【BZOJ3196】Tyvj 1730 二逼平衡树
  4. Bech32编码 (3)隔离见证地址
  5. STL中迭代器的作用,有指针为何还要迭代器
  6. 辛星浅谈PHP的混乱的编码风格
  7. 播放框架模块:分而治之
  8. (枚举)餐厅点餐(fzu2086)
  9. 并不能一蹴而就的s9t9
  10. pil对图像加透明 python_使用Python图像处理库Pillow处理图像文件
  11. 【英语学习】【English L06】U02 Food L2 Salad dressings
  12. Unity有哪些让做项目事半功倍的插件值得推荐?
  13. 腾讯游戏安全报告:定制外挂占比过半 游戏黑产资产惊人
  14. centos activemq 集群配置 Networks of Brokers
  15. ToneBoosters Plugins Bundle for Mac(音频效果器插件包)
  16. 春运前夕探秘动车所里的“动车体检医生”
  17. 首席赚钱源码(外卖券+电影+淘宝客+提现裂变流量主)功能强大
  18. 中国石油安全问题及解决对策
  19. 正则表达式,分组,捕获组,反向引用,重复数字正则表达式 ,python 实现
  20. 基于面部视频的实时心率检测系统 day four

热门文章

  1. Add NIC to Openfiler 2.3
  2. maven setting 设置jdk版本
  3. 算法基础练习--最大公约数和最小公倍数
  4. MySQL 添加列 修改列 删除列
  5. 报表统计(六) 访问数据库
  6. 解析恶意软件***技术特点
  7. Linux安装配置 VNC Server
  8. 小辣椒android密码怎样开,小辣椒手机忘记密码怎么恢复出厂设置
  9. asp向不同的用户发送信息_使用 Linux 命令行与其他用户进行通信 | Linux 中国
  10. k1658停运到什么时候_2020年春节快递几号停运 2020年春节快递停运时间电商春节放假通知...