ES6之let与const

思维导图

JavaScript共包含三个部分:ECMAScript、DOM和BOM,而我们今天开始所要讲的ES6的全称就是ECMAScript6,它是2015年发布的ECMAScript标准,故又被称之为ECMAScript2015。而后每年都会更新一个新版本,并以该年份置于其后作为标识,而这些从2015年开始的ECMAScript版本都被统称为ES6。

ES6相对之前版本增加了很多新的特性,但是也有很多都只是语法糖,也就是说实现功能和之前一样,只是语法更简洁了而已(如箭头函数、类)。这些新特性新语法给我们开发带来了很多便利,提高了工作效率和降低了维护成本。遗憾的是,现代浏览器对ES6兼容参差不齐,所以导致很多人虽然想用但是不敢用。不过幸亏有了像Babel这样优秀的编译工具,能将ES6语法编译成现代浏览器能识别的ES6之前版本,这样我们又可以轻松愉快地使用它了。

接下来,就让我来为大家一步步地打开这扇通往ES6的大门吧!


一、let——变量声明

在ES6之前,我们是使用var来声明变量,那么我们就来简单说说varlet之间到底有什么区别。

1. 块级作用域

var声明的变量不是块级作用域,所以代码块之外能访问代码块中的变量。

{   // 代码块
  var a = 0;  // 全局变量,外部可访问
}
console.log(a);   // 0

let声明的变量是块级作用域,所以代码块之外无法访问代码块中的变量。

{   // 代码块
  let a = 0;  // 局部变量,外部可访问
}
console.log(a);   // 报错

2. 暂时性死区

var声明的变量会进行变量提升,也就是说,该变量声明总会被提升到作用域最顶部。

{
  a = 0;
  var a;
}
console.log(a);   // 0

变量a的作用域为全局,故以上代码其实相当于下面代码:

var a;  // 变量提升
{
  a = 0;
}
console.log(a);   // 0

然后再看下面这个例子:

console.log(a);   // undefined
{
  a = 0;
  var a;
}
还有 64% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 991评论 0 0
  • 在ES6中新增加了let和const,现在来看看他们的基本用法。 let: 1:不存在变量提升 var命令会发...
    lionlsc阅读 173评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 1,647评论 0 2
  • let 一、块级作用域 块级作用域也称作词法作用域,存在于函数与块中{}let只在块级作用域中存在,因此当你在不同...
    lesdom阅读 565评论 0 0
  • 这是一篇我很久以前发表在博客园的文章,因为最近更新了机子的环境,又要重新设置一次环境,现在就体验到经常写文章的好处...
    梁睿坤阅读 3,266评论 0 0