美文网首页
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