好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

ECMAScript 6

ECMAScript 6

2015年6月17日,ECMA国际组织发布了 ECMAScript 的第六版,该版本正式 名称 为 ECMAScript 2015,但通常被称为 ECMAScript 6 或者 ES6。(MDN)

ES6 的发布让 JavaScript 的便携体验有了里程碑式的飞跃。

各种概念性的特性都被纳入标准,如 Promise 、 模块化 。

Google Chrome 浏览器 支持 绝大部分的 ES6 特性,可以直接在浏览器上体验。

网针对 ES6 也有对应的 Wiki 教程,这个课程讲解比较全面,使用 ES5 与 ES6 做对比的方式进行的讲解,想全面掌握的同学可以参阅。

1. 区别体验

ES6 经常被吹的天花乱坠,实则还是语言相关的知识,他在以前的基础上,对语法、全局对象、特性等做了扩充。

如:变量可以采用 let 关键字声明。

1.1 let

let 是 ES6 中提供了可以声明变量的关键字。

  let  number  =   ; 

console .  log  ( number )  ; 
 

使用 let 声明的变量,对上层作用域的污染更少。

  let  number  =   ; 

 if   ( number  <   )   { 
   var  base1  =   ; 
   let  base2  =   ; 

  number  =  number  +  base1  +  base2 ; 
 }   else   { 
  number  =   ; 
 } 

console .  log  ( base1 )  ;   //  输出 :1 
console .  log  ( base2 )  ;   //  输出 :ReferenceError: base2 is not defined 
 

可以发现在 if 之外, base1 还是能被访问到的,但是 base2 却不行。

这是因为 ES6 引入了块级作用域的概念, let 声明的变量,只在块级作用域内有效。

1.2 对象简洁表示法

在 ES6 之前,对象字面量的 属性 一定要书写上 属性 值和 属性 名。

在 ES6 中,如果对象的 属性 名和存放 属性 值的变量相同,则只需要写一次。

  // 在 ES5 中 
 function   getInfo  (  )   { 
   // 通过某种方式拿到的数据 
   var  username  =   '张三'  ; 
   var  enemy  =   '罗老师'  ; 
   var  gender  =   '男'  ; 
   var  age  =   ; 

   return   { 
    username :  username , 
    enemy :  enemy , 
    gender :  gender , 
    age :  age , 
   }  ; 
 } 

 // 在 ES6 中 
 function   getInfo  (  )   { 
   // 通过某种方式拿到的数据 
   var  username  =   '张三'  ; 
   var  enemy  =   '罗老师'  ; 
   var  gender  =   '男'  ; 
   var  age  =   ; 

   return   { 
    username , 
    enemy , 
    gender , 
    age , 
   }  ; 
 } 
 

可以看到 ES6 使得 代码 更清晰,也可以直接看出对象的 属性 名和存放 属性 值的变量是同名的。

同样的, 方法 也提供了简写的方式:

  var  obj  =   { 
   say  (  )   {   // ES6 
    console .  log  (  '说话'  )  ; 
   }  , 
  walk :   function  (  )   {   // ES5 
    console .  log  (  '走路'  )  ; 
   }  , 
 }  , 
 

2. 兼容性

虽然目前还在维护的最新版的浏览器几乎都 支持 了大部分 ES6 特性,但国内生态还不允许直接将 ES6 代码 运行于线上,所以就需要一定的 解决方 案,使开发者开发过程中全面使用 ES6,但是线上又是运行 ES5 、 ES3 的 代码 。

特性上会采用 shim 的方式,大部分情况下概念会将它与 poly fill 混用,可以理解成给浏览器打补丁,让旧版的浏览器 支持 新版的特性,如 ES6 提供的 Object.assign 方法 ,旧版的浏览器是没有的。通过 poly fill ,使用 ES5 将刚该 方法 实现后,在放到 Object 对象下,变相的让浏览器 支持 新特性。

但还有一些特性是 poly fill 很难 解决 的,特比是语法特性,如 let 关键字。

这些特性就会采用 编译 的方式来 解决 ,如将 let 替换成 var ,这一块最常用的工具目前是 babel 。

所以如果项目是需要上线运行,并且目标 用户 群体范围非常广,尽量不要上线 ES6 代码 ,上线前也做好各个平台的浏览器测试。

3. 小结

ES6 的出现,让 JavaScript 的 代码 质量有了质的飞跃,也 解决 、优化了以前存在的许多问题。

现在找前端岗位的工作, ES6 是必备技能,务必要掌握。

网针对 ES6 也有对应的 Wiki ,相关知识点可以参阅,相信阅读完会有更多收获;

Node.js ? ?swiper

查看更多关于ECMAScript 6的详细内容...

  阅读:45次

上一篇

下一篇

第1节:什么是 JavaScript    第2节:学习环境准备    第3节:调试方案    第4节:JavaScript 变量    第5节:JavaScript 数据类型    第6节:JavaScript if 语句    第7节:for 语句    第8节:JavaScript 算数运算符    第9节:JavaScript 比较运算符    第10节:JavaScript 逻辑运算符    第11节:JavaScript 函数    第12节:JavaScript 表达式    第13节:JavaScript 对象    第14节:JavaScript 字符串    第15节:JavaScript 数字    第16节:JavaScript 数组    第17节:JavaScript switch 语句    第18节:JavaScript while 语句    第19节:JavaScript 的 break 与 continue    第20节:JavaScript with    第21节:document.cookie    第22节:JavaScript Function    第23节:JavaScript Math    第24节:JavaScript Date    第25节:JavaScript RegExp    第26节:JavaScript JSON    第27节:什么是 DOM    第28节:DOM 和 JavaScript 的关系    第29节:获取和操作 DOM 节点    第30节:DOM 与事件    第31节:DOM 事件绑定    第32节:DOM 事件对象    第33节:DOM 事件流    第34节:事件相关的优化    第35节:自定义事件    第36节:表单校验    第37节:什么是 BOM    第38节:常用的 BOM 相关对象    第39节:BOM 常用属性和方法    第40节:AJAX    第41节:异常处理    第42节:三元运算符    第43节:逗号操作符    第44节:void    第45节:typeof    第46节:delete 操作符    第47节:debugger    第48节:getter & setter    第49节:new 运算符与构造函数    第50节:JavaScript 原型    第51节:JavaScript instanceof    第52节:JavaScript this    第53节:严格模式    第54节:作用域    第55节:闭包    第56节:变量提升    第57节:对象包装器    第58节:Lodash    第59节:moment    第60节:swiper    第61节:ECMAScript 6    第62节:Node.js    第63节:Babel    第64节:CSS 预处理器    第65节:代码规范    第66节:TypeScript    第67节:WebComponents    第68节:Vue、React、Angular    第69节:小程序    第70节:JavaScript 关键字    第71节:分号导致的问题    第72节:对象属性访问问题    第73节:this 使用问题    第74节:浮点数精度问题    第75节:独一无二的 NaN    第76节:避免全局污染    第77节:控制台观察对象问题    第78节:根据环境选择语言特性    第79节:相关资源