1.箭头函数
参数用括号()括气来,一个参数直接写name=>{},
函数体用大括号{}括气来,如果省略了{},意味着表达式前面有一个隐含的return
箭头函数总是函数表达式,不存在箭头函数声明,他是匿名函数,没法用于递归,事件绑定
使用箭头函数作为回调,this绑定不是动态的是,箭头函数内的this是从包围的作用域中继承而来的this,还有argument,super,new.target都是一样
推荐使用的情况:
1.函数内只有一个return语句,内部没有this引用,切没有递归,事件绑定/解绑定
2.如果有一个内层函数表达式,依赖包含他的函数中调用var self=this,或.bind(this)改变this指向,那么内层函数用箭头函数
3.内层函数表达式依赖封装函数中某些像var args=Array.prototype.slice.call(arguments)来保证arguments的词法复制,内层函数可以用箭头函数
ps:箭头函数是this,arguments是,super的词法绑定
function user(name,age){
console.log(name.age)
var say=`My name is ${name},i am ${age} years old!`
return say;
}
//箭头函数
(name,age)=>{
console.log(name.age)
var say=`My name is ${name},i am ${age} years old!`
return say;
}
2.for of循环,遍历迭代器
var a=['a','b','c'];
//for in遍历的是下标
for(var i in a){
console.log(i); //0 1 2
}
//for of遍历的是值
for(var i of a){
console.log(i); //a,b,c
}
js中默认为iterable的有:Arrays,Strings,Generators,Collections,TypedArrays
3.正则表达式
js字符串通常被解释为16位字符序列,这些字符对应基本多语言平面(BMP),那些扩展字符会被当成2个独立的字符来匹配
在es6中,u标识符表示正则表达式用unicode(utf-16)字符来解释处理字符串,把扩展字符当成单个实体匹配
3.二进制(0b),八进制(0o),十六进制(0x)
Number("11110"); //30
Number("36"); //30
Number("30"); //30
Number("1e"); //30
var a=30;
a.toString('2');//"11110"
a.toString(8);//"36"
a.toString();//"30"
a.toString(16);//"1e"
4.unicode(0x0000~0xFFFF),4位
unicode是基于BMP的,在BMD之外还有许多字符,范围知道0x10FFFF,6位
var a="\uD834\uDD1E";//