一、let命令是es6新增的特性,作用与var命令类似,声明变量,不同之处在于声明的变量的作用域为块级作用域。引入let后带来了很多新的特性。

1作用域,es5之前之后函数作用域和全局作用域,let的引入带来了块级作用域,块级作用于会带来很多新的改变。

2一个需要了解的是“暂时性死区”,比如在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。

3ES5 规定,函数只能在顶层作用域和函数作用域之中声明,“{}”内声明。ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。但是块级作用域内声明的函数类似于let,对作用域之外没有影响。考虑到兼容性问题,此规则浏览器不一定遵守。

二、const命令声明一个常量,必须在声明的同时赋值,之后不能再改变其值。声明的变量同let认同块级作用域,不能提升,也存在暂时性死区,不可重复声明。const实质上并不是保证声明的量不改变,只能保证他的指向的地址不能改变。当只想数组、对象时,可以对指向的数组、对象进行赋值操作。

三、顶层对象属性,顶层对象在浏览器中指的是window。顶层对象与var声明的全局变量挂钩,对的声明的变量a进行赋值,等同于对window.a进行赋值。let、const、class、import声明的变量能够成功避免这一个现象。

很难找到一种方法,可以在所有情况下,都取到顶层对象。下面是两种勉强可以使用的方法。

// 方法一
(typeof window !== 'undefined'
? window
: (typeof process === 'object' &&
typeof require === 'function' &&
typeof global === 'object')
? global
: this); // 方法二
var getGlobal = function () {
if (typeof self !== 'undefined') { return self; }
if (typeof window !== 'undefined') { return window; }
if (typeof global !== 'undefined') { return global; }
throw new Error('unable to locate global object');
};

ECMAScript 6 新特性-set。const的更多相关文章

  1. ECMAScript 6新特性简介

    目录 简介 ECMAScript和JavaScript的关系 let和const 解构赋值 数组的扩展 函数的扩展 简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言 ...

  2. ECMAScript 2021 新特性

    ECMAScript 2021 新特性 refs https://codeburst.io/exciting-features-of-javascript-es2021-es12-1de8adf655 ...

  3. ECMAScript 6 | 新特性

    新特性概览 参考文章: http://www.cnblogs.com/Wayou/p/es6_new_features.html ——————————————————————————————————— ...

  4. ECMAScript 6新特性(1)数组篇

    数组现有的方法: .concat():连接两个或更多的数组,并返回结果. .join():把数组的所有元素放入一个字符串.元素通过指定的分隔符进行分隔. .pop():删除并返回数组的最后一个元素 . ...

  5. ECMAScript 6新特性介绍

    箭头函数 箭头函数使用=>语法来简化函数.在语句结构上和C#.Java 8 和 CoffeeScript相似,支持表达式和函数体. . =>`操作符左边为输入的參数.而右边则是进行的操作以 ...

  6. ECMAScript 6新特性简记

    ECMAScript 6.0是JavaScript语言的2015年6月的发布版. 一.let和const命令 let:用来声明变量,用法类似于var,但是只在let命令所在的代码块内有效. var a ...

  7. Ecmascript 6新特性

    声明变量由var变成let.let实际上为JavaScript新增了块级作用域.let与var相比具有的特性有 1.不允许重复声明一个变量 var a=5; var a=7; let b=6; let ...

  8. ECMAScript 5 新特性

    Strict模式 开启strict: 在文件头部,或者在一个function头部内,添加‘use strict’或者“use strict”. Strict模式的限制,以及违反时出现的异常: 新定制了 ...

  9. ECMAScript 6新特性之Proxy

    ECMAScript 6中新增了一个全局构造函数:Proxy.该构造函数能够接收两个參数:一个目标对象.一个处理对象. 代码演示样例: var target = {}; var handler = { ...

随机推荐

  1. Ubuntu16.04中如何启用floodlight的一种方式

    在 floodlight文件夹下输入 java -jar target/floodlight.jar 启动floodlight控制器,在浏览器窗口输入 http://localhost:8080/ui ...

  2. hadoop的一点小常识(1.0环境)

  3. JSP+javaBean:简易投票网页练习

    一.项目目标 session作用域中如果不及时清理一些对象,在一定久的时间或相当数量的请求后,造成session中大量对象堆积,这将严重影响服务器的性能. 在本实例中,通过写一个jsp与javaBea ...

  4. httping使用

    httping --help: 显示帮助 httping -V: 显示版本 1.httping国内网站 I) httping -g http://www.jd.com -c 5 -t 5 -F -s ...

  5. Pycharm桌面图标(Fedora)

    1.解压pycharm压缩包至/usr/local/pycharm文件夹下 2.在/usr/share/applications/目录下,新建Pycharm.desktop文件,内容如下: [Desk ...

  6. 加密算法HASH和MD5模块hsahlib

    HASH Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出, ...

  7. java基础(一):我对java的三个环境变量的简单理解和配置

    首先说说java的三个环境变量:java_home,classpath,path java_home:jdk的安装路径[你一层一层点开安装路径,直到当前目录有一个bin目录,然后在地址栏里面右键单击复 ...

  8. sosreport-汇总收集linux系统信息

    有时候我们想将Linux服务器信息一次性查询并导出发送给他人,我们可以使用这个sosreport这个工具 安装  yum install sos -y 收集信息 sosreport 收集到的信息默认保 ...

  9. redis命令行批量删除匹配到的key

    执行命令如下 redis-cli -h 12.132.30.21 -p 6379 -a 2016 -n 4 keys "ecard*" | xargs redis-cli -h 1 ...

  10. RK3399/NanoPC-T4开发板低级格式化SD卡,恢复SD卡和TF卡 方法

    恢复SD卡和TF卡 方法:Windows下运行:HDDLLF.4.40.exe执行Low-Level format然后拔插,重新插在win10下提示格式化,则执行格式化操作,即可恢复. 应用场合:使用 ...