主要参考了下面两篇博文,对ES6的新特性做一些笔记,加深印象

*号函数 迭代函数生成器

我能想到的生成器使用场景有两点,一个是类似类静态变量,一个是类似toggle的切换场景,还有就是异步阻塞程序。

function *myGenerator() {
console.log('step1');
yield 1;
console.log('step2');
yield 2;
console.log('step3');
return 3;
}
let g = myGenerator();
while(true) {
let curr = g.next();
if (g.done) {
console.log(g.value);
break;
} else {
console.log(g.value);
}
}

箭头函数

箭头函数不绑定 this 和 arguments. 通常可以作为匿名函数的简写。这个特殊的特性可以在一些场景提供简洁的代码,同时也会在某些场景带来问题。this 一般是指向当前函数体,

// arrow function

let a = {

word: 'hello',

say: function(){

setTimeout(() => {

console.log(this.word);

}, 0);

}

}

let b = {

word: 'world',

say: function() {

setTimeout(function() {

console.log(this.word);

}, 0);

}

}

a.say(); // hello

b.say(); // undefined.

变量声明 let, const VS var

const 比较简单,不多表

let 的作用范围在 {} 结构体中,比如for,if,object。 而 var 作用范围在函数体中

for (var i = 0; i < 3; i++) {
(function(i) {
setTimeout(function () {
console.log(`var: ${i}`);
}, i * 1000);
})(i);
}
console.log(`after for var: ${i}`);
for (let x=0; x<3; x++) {
setTimeout(function () {
console.log(`let: ${x}`)
}, x * 1000);
}
// console.log(`after var var: ${x}`); // error

模板字符串

对于经常在前端拼接html与js变量的我来说,无疑是一个福音。而且语法跟php几乎没有区别

`反引号之间的变量${some_var}会被替换赋值`

函数默认值,解构,展开

支持像其他语言一样使用函数默认值,跟 || 说再见。

解构 是指 类似php的 list 语法,或者python的tuple语法。注意数组和对象的区别: [v1,v2] = ['value2', value2]; {name, value} = {name:'xx', value:'yy'}

展开运算符,用于数组和对象的拼接,还有就是箭头函数的默认传参(类似python中的 *args, **kwargs),数组参数调用(func.apply(null, arr)):

//数组
const color = ['red', 'yellow']
const colorful = [...color, 'green', 'pink']
console.log(colorful) //[red, yellow, green, pink]
//对象
const alp = { fist: 'a', second: 'b'}
const alphabets = { ...alp, third: 'c' }
console.log(alphabets) //{ "fist": "a", "second": "b", "third": "c"

Promises

异步程序的同步写法。本质是把 ok_callback(resolve) 和 err_callback (reject) 封装了一下。然后同过then 调用 resolve 方法,catch 调用 reject 方法。

最新文章

  1. QQ空间HD(2)-UIPopoverController其它使用
  2. F2工作流引擎模型
  3. Spring AOP 完成日志记录
  4. ASP.NET中GridView控件删除数据的两种方法
  5. Entity Framework访问MySQL数据库的存储过程并获取返回值
  6. Github学习之路-初出茅庐,接触Github,了解Github
  7. 网站首页title 里显示ico图标
  8. &ldquo;Sysprep 错误 + CAPI2 引起的蓝屏&rdquo;的参考解决方法
  9. git同步远端的分支
  10. Double跟double
  11. sqlserver 批量删除相同前缀名的表
  12. iOS 推送全解析,你不可不知的所有 Tips!
  13. iOS开发实战-时光记账Demo 本地数据库版
  14. 30分钟掌握ES6/ES2015核心内容(下)
  15. MFC编程汇总
  16. django-pure-pagination 组件使用
  17. Python中xlrd和xlwt模块使用方法
  18. 简单Gif制作
  19. WebLogic配置JNDI数据源
  20. Sprig 面试中 问及 DI,IOC, AOP

热门文章

  1. Django基础(二)&mdash;&mdash; models
  2. Task Crontab
  3. java中的死锁现象
  4. kvm iptables 3306端口
  5. AudioTrack
  6. 在发送intent启动activity之前判断是否有activity接收
  7. 列表控件JList的使用
  8. ROS探索总结(二)——ROS总体框架
  9. uniqid() 函数 和 microtime()函数
  10. return()函数