ES6/ES2015常用知识点和概念

越来越多的开源库开始使用ES2015来构建代码了,大家知道ES6=ES2015,ES6在2015年被ECMAScript标准化组织approve,各大浏览器厂商要完全支持ES6的强大功能还须一些时日,对于喜爱新尝试的同学难道只有干等吗?幸运的是有了babel,traceur等transpiler的帮助,我们根本不用等待浏览器原生支持ES6才开始使用新技术了!其实babel做的事情很简单,他就是把es6的代码转换成浏览器认识的ES5代码。简单举一个例子,比如ES6中引入的语言原生支持模块的关键字import, export在仅实现ES5的浏览器中无法运行,因此babel做的就是将import, export转换为commonJS的模块格式require, exports, 随后在加载到浏览器端的SystemJS模块加载器的帮助下(或者通过webpack,browserify Module bundler工具整合),就能完全实现了ES6模块的功能。

本文视图整理我在学习ES6过程中遇到的一些常见重要知识点和疑惑的问题

Variable and Parameters

block scope

ES6中引入了block scope的概念,配合使用let来declare一个变量的话,该变量就只在block中可见

if (flag){
  let x = 3; // x只在这个{}block中可见
}
return x; // x is not defined error!

let vs var

let支持块作用域,不会像var那样hoisted到前面

同样let支持for block

for (let i=0;i <10; i++)
{
}
return i // i not defined

for (var i=0;i <10; i++)
{
}
return i // i==10

const(chrome,firefox支持的,貌似非es6标准)

const MAX_AGE 130
MAX_AGE = 200 //syntax error

Destructuring

let x = 2;
let y = 3;
[x,y] = [y,x] //[3,2]
// 右边的是array, 左边不是array,而是destructuring,只对x,和y赋值
// destructuring assignment, 注意

let [x,y]=[2,3] //这里对x,y两个单个变量赋值: x=2, y=3并且在后面可以直接访问
expect(x).toBe(2)
expect(y).toBe(3);

var retv = function(){
      return [1,2,3];
}
let [, x , y] = retv(); // [1,2,3]解构  这里 , 号表示忽略部分结构单元
exepct(x).toBe(2)
exepct(y).toBe(3) 

var retO = function(){
   return {
   firstName: "alice",
   lastName: "zhang",
   social: {
         qq: "13442",
         wechat: "wechatalice"
   }
  }
}

let { firstName: f, lastName: l, social:{wechat: weixin}} = retO();
//f = "alice", l = "zhang"  , weixin = "wechatalice"

let { firstName, lastNamel, social:{wechat}} = retO();
//firstName= "alice", lastName = "zhang"  , wechat = "wechatalice"

//模拟一个ajax call返回结果解构:
let ajax = function(url, {data, cache}{
       return data; //注意这里data是从ajax调用者传入的配置对象解构出来data字段后直接返回的
//在通常的ajax调用中,则从server端返回
}
let result = ajax("api/test", {
   data: "test data for ajax", //这是ajax调用的传入对象,可以被ajax解构成变量
   cache: false
});
expect(result).toBe("test data for ajax") // true
时间: 2024-11-04 16:59:39

ES6/ES2015常用知识点和概念的相关文章

30分钟掌握ES6/ES2015核心内容

30分钟掌握ES6/ES2015核心内容 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了... 在我们正式讲解ES6语法之前,我们得先了解下Babel.Babel Bab

ES6/ES2015核心内容-转载

传送门:http://www.cnblogs.com/doit8791/p/5184238.html ECMAScript定义了: JS语言语法 – 语法解析规则.关键字.语句.声明.运算符等. 类型 – 布尔型.数字.字符串.对象等. 原型和继承 内建对象和函数的标准库 – JSON.Math.数组方法.对象自省方法等. ECMAScript标准不定义HTML或CSS的相关功能,也不定义类似DOM(文档对象模型)的Web API,这些都在独立的标准中进行定义.ECMAScript涵盖了各种环境

ES6复习干货知识点汇总

一.问:ES6是什么,为什么要学习它,不学习ES6会怎么样? 答: ES6是新一代的JS语言标准,对分JS语言核心内容做了升级优化,规范了JS使用标准,新增了JS原生方法,使得JS使用更加规范,更加优雅,更适合大型应用的开发.学习ES6是成为专业前端正规军的必经之路.不学习ES6也可以写代码打鬼子,但是最多只能当个游击队长. 二.问:ES5.ES6和ES2015有什么区别? 答: ES2015特指在2015年发布的新一代JS语言标准,ES6泛指下一代JS语言标准,包含ES2015.ES2016.

javascript常用知识点总结

一.常用知识点 1.赋值 var x=10 y=x console.log(x) #10 console.log(y) #10 2.比较运算符 == | === console.log("5"==5)#True 只做值比较 console.log("5"===5)#False 比较值及类型 != | !== console.log("5"!=5)#False 只做值比较 console.log("5"!==5)#True 比较

30分钟掌握ES6/ES2015核心内容[上和下], 不错的说

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了... 作为有志青年,es6 还是需要掌握的,要看懂还得能写........ 文章作者说的很好, 可以快速过一遍. es6的

CSS3常用知识点

CSS3常用知识点 1 css3选择器 1.1 属性选择器 /* E[attr~=val] 表示的一个单独的属性值 这个属性值是以空格分隔的*/ .attr2 a[class~="kawa"] { //TODO } /* E[attr|=val] 表示的要么一个单独的属性值 要么这个属性值是以"-"分隔的*/ .attr3 a[class|="kawa"] { //TODO } /* E[attr*=val] 表示的属性值里包含val字符并且在&

移动端常用知识点

对移动端的开发也不是非常了解,只是做过一些手机端项目,小编今天在这里整理一些常用的移 动开发知识点,有兴趣的朋友也可以了解一下,当然,如果有所补充,也可发email给小编哦- -- 1.viewport :所谓viewport,即除去所有工具栏.状态栏.滚动条等之后用于查看网页的区域,假设现在有一张报纸摆在你面前,但是这张报纸被一本书压住了,所以你只能看到报纸的一部分,这部分的可视区域就是指viewport: 1 <meta name="viewport" content=&qu

java学习中,接口的使用(重要,常用知识点)(java 学习中的小记录)

java学习中,接口的使用(重要,常用知识点)(java 学习中的小记录)作者:王可利(Star·星星) 接口(功能:用来添加拓展功能的) 例子:铅笔.带橡皮檫的铅笔. 两个功能:     1.写字......> 铅笔     2.擦字......> 橡皮擦 想法:定义一个铅笔类,定义一个橡皮擦类,定义一个带橡皮擦的铅笔类继承 铅笔类和橡皮擦类 但是java是单继承的.于是就有了解决的方法:接口(可以添加拓展功能) 如:一个铅笔类,给它添加一个接口给它一个拓展类(橡皮擦类) 接口的定义模式 用

php 常用知识点

1,运算优先级 $a = 3; $b = 5; if ($a=5 || $b = 7) { $a++; $b++; } echo $a."#".$b; //结果 1#6 //逻辑运算符优先级高于赋值运算符,var_dump(3 || $b=4) 结果为bool(true) ,所以$a也为bool(true),值永远为1,不会自加.$b并没有被赋值,所以值还是5,结果就是5+1=6: $a = 3; $b = 5; if ($a=5 && $b = 7) { $a++;