夜雨随风es6学习笔记javascript
在全局声明let、const不会被添加到window,所以运行速度会比var快65%。java
let name='yeson';
let age=22;`
console.log(`${name}年龄是${age}岁`);
复制代码
es结构赋值包括数组结构赋值和对象结构赋值,es6
数组解构赋值是严格按照下标一一对应的,若是赋值常量个数不够,则对应下标变量为undfined,若是常量个数超出,则会被遗弃。数组
对象结构赋值是根据对象引用的键名来实现对应的,能够无视顺序。若是某个变量已经声明,则不能重复参与结构,解释引擎会按照重复声明处理。es6中,禁止任何变量重复声明。bash
let [a,b,c]=[1,2,3,4]
let {a,b,c}={a:10,b:20,c:30}
[b,c]=[c,b]//变量值交换
复制代码
复制数组app
//展开运算符
let arr=[92,'hello',{key:false}];
let arr2=[...arr];//浅拷贝
//arr.from() 将类数组转化为数组
(a,b,c)=>{
let arr=Array.from(arguments);//[a,b,c]
}
复制代码
默认参数函数
function fn1(a='默认参数'){
console.log(a);
}
fn1();//'默认参数'
fn1('传入参数');//'传入参数'
复制代码
不定参工具
function fn2(...a){
console.log(a);
}
fn2(1,2,3);//[1,2,3]
fn2('hi','yes','pen','apple','orange');//['hi','yes','pen','apple','orange']
复制代码
扩展参学习
let namelist=['李磊','韩梅'];
function fn3(name1 ,name2){
console.log(`${name1}和${name2}是很好的朋友!`)
}
fn3(namelist);//'李磊和韩梅是很好的朋友!'
复制代码
箭头函数的设计来自于CoffeeScript,es6添加这一特性的目的是为了让函数的声明更加简便。优化
[1,2,3].forEach((x)=>x*x)
复制代码
在es6之前javascript没有类的概念,实现面向对象继承的思路是:原型链继承、构造函数继承、拷贝继承等几种方式。它们都不是真正的继承,会出现子类不必定是父类的实例、子类和父类共享一个实例等奇葩问题。es6所以添加了关键字class。
class admin{
constructor(){
//
}
}
class pople extends admin{
constructor(contents={}){
super();
this.name=contents.name;
this.age=contents.age;
this.address=contents.address;
}
sayhi(){
console.log(`hi,我是${this.name},今年${this.age}岁,如今在${this.address},很高兴见到你!`)
}
}
let body =new pople({
name:'黄佳',
age:'18'
address:'武汉'
})
body.sayhi();//'hi,我是黄佳,今年18岁,如今在武汉,很高兴见到你!'
复制代码
es6引入了模块引用规范
import{sayhi} from './pople.js';
export default sayhi;
复制代码
使用default导出模块时,尽可能导出有用模块,尽量不导出整个对象。若是使用打包工具时,若导出整个对象,将会打包进大量未使用代码,不利于代码执行效率和后期代码优化。
//for ..of..遍历
const arr=[1,2,3,4,5];
for(let iteam in arr ){
console.log(iteam);
}
//迭代器遍历
const arr2=[1,2,3,4,5];
let num=0;//计数器
let iteam=arr2[Symbol.iterator]();
num++;
let result =iteam.next();
console.log(result.value,num);//1,2
num=num+15;
result =iteam.next();
console.log(result.value,num);//2,16
num-=16;
result =iteam.next();
console.log(result.value,num);//3,0
num=num+'123';
result =iteam.next();
console.log(result.value,num);//4,'0123'
num=Number(num);
result =iteam.next();
console.log(result.value,num);//5,123
复制代码
iterator能够在循环开始后任意位置进行数组的单步循环,中间能够作其余操做。能够理解为iterator是数组或对象上的一个游标,每次调用next(),游标就会向下移动一个单位。Symbol.iterator是object原型上的方法,可用来遍历一切可遍历对象。
(未完待续。。。)