美文网首页
Get Started of ES6

Get Started of ES6

作者: lndyzwdxhs | 来源:发表于2018-06-01 10:14 被阅读68次

Overview

let
  • 声明的变量只在let命令所在的代码块内有效
  • 没有变量提升,必须先声明后使用
  • 暂时性死区:代码块内部存在let声明的变量,声明之前都是不可用的,即使父作用域有该变量
var tmp = 123;

if (true) {
  tmp = 'abc'; // ReferenceError
  let tmp;
}
  • 同一个作用域内不允许重复声明同一个变量
块级作用域
  • ES5只有全局作用域和函数作用域
  • let实际上是为JS增加了块级作用域
  • 替代了立即执行函数表达式(IIFE)
  • 块级作用域可以声明函数(ES5中规定不可以,但是大部分浏览器环境都支持)
  • ES6中为了兼容之前的代码,块级作用域内声明的函数,行为类似于var声明的变量
  • ES6中建议使用函数表达式,不是函数声明语句
// 函数声明语句
{
  let a = 'secret';
  function f() {
    return a;
  }
}

// 函数表达式
{
  let a = 'secret';
  let f = function () {
    return a;
  };
}
const
  • 声明一个只读的常量,声明以后就不能改变
  • const作用域与let相同
  • const声明的变量并不是变量内容不可变,而是变量指向的地址不可变
顶层对象
  • 浏览器环境中顶层对象是windowsnode环境中是global

  • ES6letconstclass声明的全局变量不属于顶层对象的属性(ES5中这顶层对象的属性赋值和全局变量是一样的)

数组的解构赋值
  • ES6允许写成这样就行赋值:let [a, b, c] = [1, 2, 3]
  • 只要等号右边是具有Iterator接口的某种数据结构就可以采用这种赋值方式
  • 等号左边的值允许有默认值let [x, y = 'b'] = ['a']
Generator
  • ES6提供的一种异步编程的解决方案
  • generator函数可以理解成一个状态机,封装了多个内部状态
  • 返回一个可迭代对象,可以依次遍历函数内的每一个状态
  • 形式上与普通函数的区别是function关键字后带一个*(星号)
  • 使用yield表达式来定义不同的内部状态
  • yield表达式只能用在generator函数中,其他地方会报错
扩展运算符(...)
  • 扩展运算符(spread)是三个点(...
  • 将一个数组转为用逗号分隔的参数序列

欢迎关注微信公众号(coder0x00)或扫描下方二维码关注,我们将持续搜寻程序员必备基础技能包提供给大家。


相关文章

网友评论

      本文标题:Get Started of ES6

      本文链接:https://www.haomeiwen.com/subject/iryhsftx.html