ES6快速预览

let关键字

相对于var声明的变量,let会相对严格,如果let的变量已存在就直接抛出错误而不是覆盖

const关键字

与其他语言大差不差,其他东西该有的js也绝对不会少

箭头函数

如果你学过Java的话,这个应该不难懂 () => {}

字符串模板

在此之前,字符串和变量都是用+号来连接,现在只需要 `俩反引号然后像这样嵌入一个${变量}` (变量位置可以放其他表达式)

更方便的数组函数

  • map(callbackfn(value, key))
    遍历该数组的所有值到回调方法,返回一个新数组
  • reduce(callbackfn(), ?initValue)
    汇总计算
  • filter(callbackfn(value, key, this))
    过滤器,这个方法和map类似,如果回调方法返回true则保留这个指针上的值,返回一个新数组
  • forEach(callbackfn(value, key))
    又是循环遍历/(ㄒoㄒ)/~~

更方便的字符串函数

  • startsWith(searchString, ?position)
    检查这个字符串的前缀是不是指定值
  • endsWith(searchString, ?position)
    检查字符串的后缀是不是指定值

面向对象

class定义类

在此之前貌似也有class关键字,但是这边都是用的json,貌似作用不大。如果你学过其他的编程语言可以混合一些设计模式使用,因为在这里也有继承的特性(定义方法不需要加function)

JSON

统一标准:所有的key和字符串都要用双引号标注
ES6中如果要使用的属性在上文中出现过则可以省略,

let attr = "ES6很方便";
{
	attr,	// attr = "ES6很方便"
	fn() {	// 现在你可以这样定义方法
	}
}

generator 生成器

首先,需要了解一下什么是生成器
当然这个解释起来有点麻烦,而且今天博客的不是js。如果你想了解更多请点击传送门

  • 定义一个生成器
    这没什么难的,你只需要在定义函数的时候加个 * 号就行了n(≧▽≦)n
     //  * 可以放在function后或者函数名字前面,但必须有空格
     // 第一种写法
     function *demo() {
     	let a = yield 10;
     	return a + 1;
     }
      // 第二种写法
     function* demo() {
     	let a = yield 10;
     	return a + 1;
     }
    
  • 现在再来调用这种方式声明的函数,函数并不会执行,它们会返回一个generator对象
    你可以理解为生成器把一个函数分为了多个部分(有点像迭代器),每次next()都会执行一段
    	let d = demo();
    	let res = d.next(); // {value: 10, done: false}
    	d.next(res.value);  // {value: 11, done: true}
    

Promise

说些什么呢,哎,说多了都是泪,直接上代码吧

let promise = new Promise((resolve, reject) = > {
	// 这些形参都是可以自己定义的
	if (let res = 天时地利人和()) 
		resolve(res);
	else reject(res);
});
// 此时promise = Promise实例
promise.then(resolve => {
	console.log(resolve);
}, reject => {
	console.log(resolve);
});
// 或这样写
promise.then(res => {
	console.log("OK");
}).catch(rej = > {
	console.log("ERR");
}).finally(done => {
	console.log("DONE"); // 不论回调的是resolve还是reject, 最后都会来到这里(有点像异常捕获)	
});

Promise原型的方法
…还是用代码说话吧

// 和 && 一样,可以放很多Promise对象,当这个数组里所有的Promise都调用了resolve的时候会调用才会调用all的回调(返回的也是promise对象,还可以写的更风骚一些)
Promise.all([
	new Promise((resolve, reject) => {
		resolve();
	})
]);

// 任意一个Promise调用了reject都会调用race的回调(先到先调) 
Promise.race([
	new Promise((resolve, reject) => {
		reject();
	})
]);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值