js 进阶

1.作用域

1.1局部作用域

局部作用域分为函数作用域和块作用域

1.1.1函数作用域

①在函数内部声明的变量只能在函数内部被访问,外部无法直接访问

1.1.2块作用域

1.2全局作用域

1.3作用域链

本质 :底层的变量查找机制

规则 :就近原则  (优先查找当前函数作用域查找变量)

1.4JS垃圾回收机制

 目的 : 了解垃圾回收机制的执行过程

学习目的 为了闭包做铺垫 

1.4.2 内存的生命周期 - 内存分配-内存使用-内存回收

①内存分配  当我们声明变量、函数、对象的时候。系统自动为他们分配内存

②内存使用   读写内存 使用变量函数等,

③内存回收  使用完毕,垃圾回收自动回收 不再使用的内存

特殊情况 : 全局变量只有在关闭页面的时候才会回收。

1.4.3l垃圾回收算法说明

①引用计数:特殊情况 变量相互引用的时候就会导致内存泄露

\

②标记清除法 (最新方法)

1.5闭包

一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域

闭包 = 内层函数+外层函数的变量

也可以 外层函数使用内部函数的变量

1.6变量提升

只提升声明不提升赋值

 2.1函数提升

 //会把函数所有声明提升到当前作用域 
        //函数提升只会提升函数声明 不提升函数调用
        fn()
        function fn(){
            console.log('函数提升');
        }

 2.2函数实参

2.2.1动态参数

arguments 是函数内置的伪数组变量

function getSum(){
            console.log(arguments);//返回的是数组长度
            let sum = 0;
            for(let i=0;i<arguments.length;i++)
            {
                sum+=arguments[i]
            }
            console.log(sum);

        }
        getSum(2,3,4)
        getSum(1,2,4,2,2,3,4)

 2.2.2 剩余参数   开发过程中提倡使用

剩余参数允许我们将一个不定数量的参数表示为一个数组 是个真数组

...代表剩余参数

/剩余参数 ... 将所有的实参当成a数组的 数组元素
        function getSum(...a){
           console.log(a);
            let sum = 0;
            for(let i=0;i<a.length;i++)
            {
                sum+=a[i]
            }
            console.log(sum);

        }
        getSum(2,3,4)
        getSum(1,2,4,2,2,3,4)

 2.3-箭头函数 

基本能语法写法 如下

  //箭头函数 基本语法
        // fn() 方法1
        // const fn =() =>{
        //     console.log(1);
        // }
        // fn()
         
        // 只有一个形参的时候 可以是省略小括号
        // const fn = item =>{
        //     console.log(item);
        // }
        // fn(123);
        //只有一行代码的时候,我们可以省略大括号
        // const fn = item=> item+10
        // const res = fn(123)
        // console.log((res));
        //箭头函数可以直接返回一个对象
        // const fn=(item)=>({uname:item})
        // const o = fn('张三')
        // console.log(o);   

案例1

 //利用箭头函数求和
        const  getSum=(...arr)=>{
            let sum = 0;
            for(let i=0;i<arr.length;i++){
                sum+=arr[i]
            }
            return sum
        }
        console.log(getSum(1,2,3));
        console.log(getSum(1,2,3,4,5,6));

箭头函数 没有this 

3.展开运算符

将一个数组进行展开,并且不会修改

应用场景你 求数组的最大值,最小值,合并数组.

const arr = [1,5,3,8,2]
console.log(...arr)
//展开数组使用
        // const arr = [1,2,3]
        // console.log(...arr);
        // 拼接
        // const arr1 = [1,2]
        // const arr2 = [3,4]
        // const arr= [...arr1,...arr2]
        // console.log(arr);
        //求最大最小
        const arr =[1,2]
        console.log(Math.max(...arr));
        console.log(Math.min(...arr));

3.解构赋值

3.1.1数组解构 

 

        const arr = [100,60,80]

        // const [max,min,avg]=[100,60,80]
        const [max,min,avg]=arr;
        console.log(max,min,avg);

 

3.1.2 对象解构

 //     const obj = {
    //         uname:'pink老师',
    //         age : 18

    //     }

    //     // const {uname,age} = obj
    //     // console.log(uname,age);

    //    //对象解构的变量名 可以重新改名 对象的属性名:新变量名


    //     const{uname,age:age1}=obj
    //     //2.解构数组对象 
    //     console.log(uname,age1);

    const pig = [
        {
            name:'pig',
            age:6
        }
    ]
    const [{name,age}]=pig
    console.log(name,age);

3.3多级对象解构

        const pig={
            name:'佩奇',
            family:{
                mother:'猪妈妈',
                father:'猪爸爸',
                sister:'乔治'
            },
            age:6
        }
        
        const {name,age,family:{mother,father,sister}}=pig
        console.log(name,age,mother,father,sister);

4.遍历数组 forEach方法

 

 5.筛选数组filter 方法重点

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值