【学】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.拼接:使用模板字符串 ``

 

posted @ 2017-12-06 15:04  Chrisreen  阅读(248)  评论(0编辑  收藏  举报