闭包、赋值与引用、箭头函数、数组遍历API

一、闭包

定义: 函数中调用其它函数,有父级与子级之分。闭包即父级作用域包裹子级作用域,或子级作用域使用了父级作用域的变量或参数。
例:

        function fa(){   // 父
            let x = 10
            function son(){    // 子
                x++            //子用父的参数
            }
        }
 javascript变量回收机制
1.全局变量只要当前网页不关闭就不会回收
2.局部变量使用完后就会回收
闭包会使局部变量不会被回收,所以会占用内存。

代码1:

        fn()()
        var a = 0
        function fn(){
            alert(a)   // undefined
            var a = 3
            function b(){
                alert(a)  // 3
            }
            return b
        }

代码2:

        var a = 5
        function fn(){
            var a = 10
            alert(a)   //10
            function b(){
                a++
                alert(a)   //11
            }
            return b
        }
        var c = fn()
        c()  //10
        fn()()  //11
        c()    //12

二、赋值与引用

=的含义:
1.赋值:右边的数据赋值给左边的变量,赋完之后,左右无关系,左边的改变不会对右边有影响,右边数据时基础数据类型
2.引用:右边数据给左边,两边建立引用关系,右边数据是对象。左边的改变对右边有影响,任何一边的改变,会影响另一边。

        let a = 10
        let b = 10
        console.log(a===b) // true ,基础数据类型在做比较时,只比较值和类型

        let c = {name:"csdn"}
        let d = {name:"csdn"}
        console.log(c===d)  //false ,对象数据类型,比较地址

        let c = {name:"csdn"}
        let e = c
        console.log(c===e)  //true

三、箭头函数

箭头函数即普通函数的简写,且其内部不会产生新的this指向,以其父级this指向为准。

       let a = function(x){
            console.log(123)
        }
        // 简化后:
        let a = (x) => {
            console.log(x*2)
        }
        //精简后:
        let a = x => {
            console.log(x*2)
        }
        let x = function(a,b) {
            return a+b
        }
        //简化后:
        let x = (a,b) => {
            return a+b
        }
        //精简后:
        let x = (a,b) => a+b

四、数组的添加删除–push、pop、unshift、shift

        let arr = [11,22,33,44]
        console.log(arr.length)  //显示数组的长度,4
        arr[3] = 99    //重新定义数组的内容,将其改为[11,22,33,99]
        arr.length = 2   //将数组的长度削减为2,数组变为[11,22]
        arr.length = 10   //数组变为[11,22,33,44,empty*6]
        arr.push(55)   //从数组的后端添加,数组变为[11,22,33,44,55]
        arr.pop()  //从数组的后端删除,数组变为[11,22,33]
        arr.unshift(00)   //从数组的前端添加,数组变为[00,11,22,33,44]
        arr.shift()    //从数组的前端删除,数组变为[22,33,44]
        let arr = [11,22,33,44]
        let x = arr.push(55)
        console.log(x)  //push和unshift使用后,x返回的是数组的长度5
        let arr = [11,22,33,44]
        let x = arr.pop()
        console.log(x)  //pop和shift使用后,返回的是删除的元素,44

指定位置添加删除,方法 splice(从哪位开始,删除几个,用什么代替)

        let arr = [11,22,33,44]
        arr.splice(1,1,66)
        console.log(arr)  //[11,66,33,44]
        arr.splice(arr.length,0,"csdn")
        console.log(arr)   //[11,66,33,44,"csdn"]

五、数组的遍历forEach

        let arr = [4,5,6,7]
        arr.forEach( function(item, index, arr){
            console.log(item, index, arr)
        })
        //item为数组中的元素;index为元素对应的位置; arr为该数组
        // 打印 4  0  [4,5,6,7]
        //      5  1  [4,5,6,7]
        //      6  2  [4,5,6,7]
        //      7  3  [4,5,6,7]

只有querySelectorAll获得的节点列表、数组才能直接forEach

        //此处的ali为用querySelectorAll获得的列表
        ali.forEach((item) => {
            item.onclick = function(){
                alert(this.innerText)
            }
        })

六、数组的filter

过滤原数组,返回的是一个新数组

        let arr = [22,33,44,55]
        let newArr = arr.filter(item => {
            if(item%2){             //item%2,取余为0,0为false
                console.log("奇数")
            } else {
                console.log("偶数")
            }
        })

七、数组的遍历–map

forEach没有返回值,map返回的是一个根据指定函数对原数组进行处理产生的新数组

        let arr = [22,33,44,55]
        let newArr1 = arr.map( item =>  item*item)
        console.log(newArr)  //此处返回原数组各元素的二次方,产生的是个新数组
		let newArr2 = arr.map( item =>  item**3)   //此处返回原数组各元素的三次方
API返回值
forEach无返回需求
filter布尔值
map数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值