今天的码农女孩总结了ES6函数、对象扩展等的笔记

1.正则对象扩展
定义:
var re=new RegExp("a","i")
var re=/a/i
var re=new RegExp(/a/i) //ES6新增
修饰符:
u 匹配unicde值,可以匹配4字节的编码
y 粘连修饰符
s 匹配任意字符
属性:
sticky判断是否设置了y修饰符
flags返回正则表达式的修饰符
后行断言:
小括号匹配的值一般都是前行断言,只有?!能匹配后行断言,写上?<可以让小括号中的所有正则能验证后行断言
        console.log(/(?<=%)\d+/.exec("asd %100"))//100
        console.log(/(?<!%)\d+/.exec("asd %100"))//00

2.数组扩展
扩展运算符(...)
var arr=[1,2,3]
console.log(...arr)
var [a,...b]=[1,2,3,4]
console.log(a)//1
console.log(b)//[2,3,4]
属性和方法
of()将一组值转化为数组
copyWithin(替换的位置,选取开始位置,选取的结束位置)将数组的指定值复制到其他位置
find(函数)查找第一个符合条件的元素
findIndex(函数)查找第一个符合条件的位置
fill()将指定值填充一个数组
keys()遍历数组下标
values()遍历数组元素
entries()遍历数组键值对
for(var [index,value] of x.entries()){
            console.log(index,value)
        }
includes()判断数组是否包含某个元素,返回布尔值
数组的空位
空位是指数组的位置上没有存储任何值,也不是null或undefined,在数组下的方法中,谁会忽略空位呢?
跳过空位不执行:forEach,filter,every,some
会保留空位,不参与运算:map
把空位视为undefined:for/for of,join,toString,find,findIndex等ES6函数

3.函数扩展
函数的参数定义默认值
function fun(a,b=1){
}
fun(2)
函数的参数用解构赋值
function fun([a,b,c]){
    return a+b+c
}
fun([1,2,3])

function fun({name,age}){
    return a+b+c
}
fun({name:"lisi",age:23})
函数的参数用扩展运算符
function fun(...arr){
    return arr
}
fun(1,2,3,4)
属性和方法
name 获得函数的名字
foo.name返回ogg,但是不能直接调用ogg
        var foo=function ogg(){}
        console.log(foo.name)//ogg
        console.log(ogg.name)//报错
length 获得没有指定默认值的参数个数
遇到带默认值的后面就不判断了
        function fun(a=1,b,c){}
        console.log(fun.length)//0

        function fun(a,b=1,c){}
        console.log(fun.length)//1

        function fun(a,b,c=1){}
        console.log(fun.length)//2
注意:在ES6语法当中,函数如果使用了默认值,扩展运算符,解构赋值,就不能显示为严格模式,否则会报错
箭头函数
        //var 函数名=参数值=>返回值
        var fun=v=>v
        console.log(fun(66))//66

        //不带参数
        var foo=()=>"a"
        console.log(foo())//a

        //带多个参数
        var ogg=(a,b,c)=>a+b+c
        console.log(ogg(1,2,3))//6

        var ogg=(a,b,c=4)=>a+b+c
        console.log(ogg(1,2))//7

        //不带返回值
        var bar=(a,b)=>{console.log(a+b)}
        bar(2,3)//5
注意事项:
1.箭头函数的this指向的是定义时所在的对象,不是使用时的
2.箭头函数不能当做构造器,不能用new命令,否则报错
3.不能使用argument对象,但是可以用扩展运算符(...)
4.不可以使用yield命令,不能用作Generator

4.对象扩展
属性可以引入外部变量
var name="lisi"
var obj={n:name}
简写:var obj={name}//等于{name:name}
对象下的函数的简写方式
var obj={
   say:function(){......}
  }
var obj={//ES6简写方法
   say(){......}
  }
属性和函数名称可以定义成表达式
obj.name    obj["name"]
var obj={name:"lisi",["age"]:23}
obj["ag e"]//可以定义空格
obj["age"+i]//可以定义表达式和变量
属性和方法
1.is()比较两个值是否相等
2.Object.assign()复制对象
3.keys()遍历所有属性
4.values()遍历所有值
5.entries()变量键值对
6.getOwnPropertyDescriptor()返回某个读写数的描述的限定
is和===的区别
        console.log(-0===+0)//true
        console.log(NaN===NaN)//false
        console.log(Object.is(-0,+0))//false
        console.log(Object.is(NaN,NaN))//true
特殊函数
1.高阶函数
高阶函数接收一个函数作为参数,或者返回一个函数作为返回值
var fun=fn=>fn()
2.柯里化函数
柯里化是将多个参数转换为每个只有一个参数的函数序列的过程
var fun=a=>b=>c=>a+b+c
console.log(fun(1)(2)(4))//7
3.纯函数
纯函数是返回值仅由其他函数确定的一种函数,没有任何副作用
在任何时间输入相同参数,函数的返回值皆为相同
        var argfun=[]
        var fun=num=>argfun=>argfun.concat(num)
        fun(6)(argfun)
        //非纯函数
        var arr=[]
        var fun=num=>arr.push(num)
        fun(1)
        fun(2)
        console.log(arr)
        //纯函数
        var argfun=[]
        var fun=num=>argfun=>argfun.concat(num)
        var s=fun(6)
        console.log(s(argfun))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值