js的高阶函数

js的高阶函数

高阶函数
高阶函数是对其他函数进行操作的函数,它接收***函数作为参数***或将***函数作为返回值***输出

函数作为参数

<script>
    function aa(a,b,fun){
            console.log(a+b)
    fun()
    }
    aa(5,6,function(){console.log("我是函数,我是函数的参数")})
</script>

在这里插入图片描述

函数作为返回值

闭包:

所谓闭包就是: 闭包就是能够读取其他函数内部变量的函数。

例如:

<script>
function fn(){
    const mun=10;
    function funs(){
        console.log(mun)
    }
funs();
}
fn();
</script>

这就是一种闭包

全局变量如何访问局部变量的值呢,我们只需要在局部变量的函数return一个函数出去。就可以访问到局部变量的变量

<script>
function fn(){
    const mun=10;
    function funs(){
        console.log(mun)
    }
  return funs;
}
var f=fn();
f();
</script>

总而言之:闭包延伸了变量的作用范围

浅拷贝:拷贝地址值

Object.assign(o,obj)//将后面的对象拷贝给前面的对象

看如下代码:

<script>
    var obj1={
        name:'韦开宇',
        age:18,
        fun:function(){
                console.log("我是obj1的方法")
        }
    }
    var obj2={
    }
    console.log(obj1)
    var result=Object.assign(obj2,obj1);
    console.log(obj2)

深拷贝:拷贝数据,变量,函数等等等

`deepCopy(o,obj)`

案例:

<script>
    var obj1={
        name:'wky',
        age:18,
        fun:function(){
                console.log("我是obj1的方法")
        }
    }
    var obj2={
    }
    function deepCopy(obj2,obj1){
        for(var k in obj1){
           var item= obj1[k];
           if(item instanceof  Array){
            obj2[k]= [];
            deepCopy(obj2[k],item)
           }else
           if(item instanceof  Object){
            obj2[k]= {};
            deepCopy(obj2[k],item)
           }else{
            obj2[k] =  item;
           }
           
        }
    }
    deepCopy(obj2,obj1);
    console.log(obj2)
    </script>

正则表达式

js中正则表达式用于匹配字符串中字符数组的模式,多用于表达的验证
进入正题:
创建简单的正则表达式:

var result=/123/   //只要包含123即可返回true

验证正则表达式:

 console.log(result.test("123"))  //控制台打印true
正则表达式边界符号:
$ ^

必须是精确的值才返回true

^:必须以某某值开头
$ :必须以某某值结尾
边界符号$ ^同时使用必须是精确的值才返回true
比如:

    var result=/^123$/;
    console.log(result.test("123"))//必须输入123才可以返回true
正则表达式字符类:

[]:表示只包含有其中之一就返回true
比如:

    var result=/[123]/;
    console.log(result.test("我爱你爱着你,就像老鼠爱大米~~~~~1"))//返回true,因为字符串中包含了一个 1

那么[],$ ,^三者共用会产生什么情况呢?

  var result=/^[abcdef]$/;
    console.log(result.test("a"))//必须是a或者b或者c或者d....其中一个才会返回true,否则都为false

只要输入24个英文字母中的其中一个就会返回true怎么做呢??是不是需要些abcdefghij.......z呢?不需要的,只需要这样a-z就可以包含a到z

   var result=/^[a-z]$/;
    console.log(result.test("a"))

字符组合
只要输入,a-zA-Z0-9_-的其中一个都可以返回true

    var result=/^[a-zA-Z0-9_-]$/;
    console.log(result.test("a"))

如果中括号中有^就是取反
只要包含了a-z0-9_-都返回true,多以只能输入A-Z以及其他字符

   var result=/^[^a-z0-9_-]$/;
    console.log(result.test("A"))
正则表达式量词符

* :相当于>0

   var result=/[a-z*]/;
    console.log(result.test("aaaaaaaaaddddd"))//表示a-z你随便则么输,输入都少位数都是true

+ :相当于>n ->> n是自定义长度

? :只能取0或者1

{3} :只能大于3
{3,} :只能大于3等于3
{3,16} :只能大于3小于16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值