• 【学】ES6基础语法


    写在前面的话:

      ES6学习基础语法集结~ 本文是 一篇学习笔记,原文:http://es6.ruanyifeng.com/

    关于EC6:

    "ES6 的第一个版本,就这样在2015年6月发布了,正式名称就是《ECMAScript 2015标准》(简称 ES2015)。2016年6月,小幅修订的《ECMAScript 2016标准》(简称 ES2016)如期发布,这个版本可以看作是 ES6.1 版,因为两者的差异非常小(只新增了数组实例的includes方法和指数运算符),基本上是同一个标准。根据计划,2017年6月发布 ES2017 标准。"

    "因此,ES6 既是一个历史名词,也是一个泛指,含义是5.1版以后的 JavaScript 的下一代标准,涵盖了ES2015、ES2016、ES2017等等,而ES2015 则是正式名称,特指该年发布的正式版本的语言标准。本书中提到 ES6 的地方,一般是指 ES2015 标准,但有时也是泛指“下一代 JavaScript 语言”。"


    一、关于兼容:

      各大浏览器的最新版本,对 ES6 的支持可以查看 kangax.github.io/es5-compat-table/es6/

      Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环境执行。这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持。

        Babel 的配置文件是.babelrc,存放在项目的根目录下。使用 Babel 的第一步,就是配置这个文件。

        Babel提供babel-cli工具,用于命令行转码。babel-cli工具自带一个babel-node命令,提供一个支持ES6的REPL环境。它支持Node的REPL环境的所有功能,而且可以直接运行ES6代码。

      ES6 共有6种声明变量的方法(前两种是ES5的):

        1. var命令

        2. function命令

        3. let命令

        4. const命令

        5. import命令

        6. class命令

    二、let

      1. let 所声明的变量,只在let命令所在的代码块内有效。

        ES6明确规定,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错

        也就是说,在代码块内,使用let命令声明变量之前,该变量都是不可用的。

      2. let所声明的变量一定要在声明后使用,否则报错。

      3. let不允许在相同作用域内,重复声明同一个变量。因此,不能在函数内部重新声明参数。

      4. ES6 允许块级作用域的任意嵌套。

        外层作用域无法读取内层作用域的变量。

        内层作用域可以定义外层作用域的同名变量。

      5.本质上,块级作用域是一个语句,将多个操作封装在一起,没有返回值。在块级作用域之前加上do,使它变为do表达式,则可以得到返回值。let x do{   }

    三、const

      1. const声明一个只读的常量。一旦声明,常量的值就不能改变,一旦声明,就必须要赋值。

      2. const的作用域与let命令相同:只在声明所在的块级作用域内有效。

    四、顶层对象(同一段代码为了能够在各种环境,都能取到顶层对象,现有的解决方式有二,见原文

      1.顶层对象:ES5 的顶层对象,本身也是一个问题,因为它在各种实现里面是不统一的:

        1)浏览器环境 里面,顶层对象是 window对象,但 Node 和 Web Worker 没有window

        2)浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self

        3)Node 里面,顶层对象是 global对象,但其他环境都不支持。

      2. 顶层对象的属性与全局变量(从ES6开始,全局变量将逐步与顶层对象的属性脱钩):

        1. ES5之中,顶层对象的属性与全局变量是等价的。

          不适之处: 1)顶层对象的属性赋值与全局变量的赋值,是同一件事,程序员很容易不知不觉地就创建了全局变量,顶层对象的属性是到处可以读写,不利于模块化编程。

                2)window对象有实体含义,指的是浏览器的窗口对象,顶层对象是一个有实体含义的对象,也是不合适的。

        2.ES6 的改进:一方面规定,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;

                另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。

    五、ES6新增的 关于字符串: 

      1.拼接:使用模板字符串 ``

  • 相关阅读:
    maven 多环境打包
    velocity 将数字转为以万为单位,保留2位小数
    mybatic 结果为null,返回0
    websocket-spring 整合
    烂泥:rsync配置文件详解
    烂泥:【转】rsync命令参数详解
    烂泥:linux文件同步之rsync学习(一)
    烂泥:使用snmpwalk采集设备的OID信息
    烂泥:apache密码生成工具htpasswd的应用
    烂泥:apache性能测试工具ab的应用
  • 原文地址:https://www.cnblogs.com/Christeen/p/7125547.html
Copyright © 2020-2023  润新知