JS高级的第一天

JS高级的第一天

全局作用域

全局作用域: 在javaScript中,函数外部的所有作用范围都称为全局作用域
全局变量: 在全局作用域中定义的变量,叫全局变量
全局变量特点: 在全局作用域中的全局变量可以在任何地方(script标签内部、函数内部)被访问到

局部作用域

局部作用域: 在函数内部形成的作用范围称为局部作用域或者函数作用域
局部变量: 在局部作用域中定义的变量称为局部变量
局部变量特点: 局部变量只能在当前作用域中被访问
综合案例1
在这里插入图片描述
综合案例2
在这里插入图片描述
综合案例3
在这里插入图片描述
综合案例4
在这里插入图片描述

块级作用域

块级作用域: 在javaScript中,通过let关键字定义变量且位于**{}**中,就会形成块级作用域
块级作用域特点: 变量只能在当前块级作用域中被访问
var中没有块级作用域 只执行公共的i
在这里插入图片描述

作用域链

作用域链: 在javaScript中,多个作用域嵌套形成的一个链状结构
作用域链作用: 通过作用域链进行变量查找

const关键字

const关键字: 在程序中定义常量的关键字
const关键字注意事项:
const定义常量时候必须设置初始值
const定义常量后,常量的值不能被修改
const定义常量名不能重复
const可以产生块级作用域

变量,函数提升

变量提升: 使用var关键字定义变量的时候,程序会先将变量的声明提升到当前作用域的开始,不包括赋值
函数提升: 定义函数的时候,程序会将函数的声明提升到当前作用域的开始位置,不包括函数的调用
let不存在变量提升
执行代码,进入新的作用域
1.不要管全局和局部,代码都不是立即执行
2.先执行预解析
3.预解析做的事件:预见var声明变量和function声明函数,提升当前作用域最顶端,这就是预解析后的代码
4.浏览器执行解析后代码

var 与let 区别

相同:都是关键字,都是用于声明变量
不同:
配合循环
let 随着循环可以形成多个块级作用域,每个循环中变换的值都属于单独某个块级作用域
var配合循环 没有块级作用域 循环完毕 循环下标变为循环长度 公共下标

let 先声明 在使用
var 可以先用 在声明 (预解析 ,执行代码 进入新的作用域 ,预见var声明变量和function声明函数 ,提升到当前作用域的最前端)
预解析:
代码执行进入新的作用域:1.找var声明的变量和function fn(){}
2.提升到当前作用域的最顶端

闭包

函数
声明1: function () {} 声明2:函数表达式
应用1:自调用函数 多个功能 主动写自调用函数 防止变量污染
(function () {
let a = 10
})()
应用2: 递归函数 函数内部会再次调用一次自己
应用3:回调函数 函数A如果作为另外一个函数B的参数传入的时候 函数A是回调函数
dom添加事件监听 click fn 回调函数

闭包: 闭包就是能够读取其他函数内部变量的函数
闭包本质: 闭包就是一个函数,但是不是所有的函数都是闭包
闭包作用: 可以延长变量的使用生命周期,避免变量污染
闭包总结:
闭包本质上就是一个函数
闭包函数就是在一个函数中访问另外一个函数中的变量
闭包函数的作用延长了变量的使用生命周期

场景
1.假设 新手 初始化账户10
2.对10 错-5 在这里插入图片描述闭包
1.基本形式 函数内部A 还有其他函数B
2.函数B内部 使用 函数A的局部变量

闭包特点
常规,函数内部的局部变量 ,
如果执行完函数,发现没有其他地方用到这个函数,会被销毁
闭包:函数B内部 要用到 函数局部变量A的话,此时局部变量A不会被销毁
页面中出现多个闭包,内存很多空间都会存储不能被销毁的变量和值
尽量规避
ES5的写法
在这里插入图片描述
ES6的写法
在这里插入图片描述

函数

默认值参数

  1. 函数中的形参可以设置默认值,函数中的形参本质就是一个变量,可以直接默认赋值
  2. 函数中的形参如果设置了默认值,在没有设置实参的情况下,就是默认值,否则就是实参的值

arguments

  1. arguments是函数中用来保存实参信息的一个数组
  2. 当函数中实参个数不确定的时候,可以通过arguments获取实参信息
    1.形参? 调用的时候是否需要传入实参
    2.返回值? 调用的时候 是否需要得到结果

    需求 封装一个函数 求多个数字的和
    在这里插入图片描述

剩余参数

  1. 语法: …自定义参数名
  2. 作用: 用来获取多余的实参值 (类似于arguments)
  3. 注意事项:
    3.1 剩余参数必须写到函数形参的最后
    3.2 剩余参数的名字是自定义的
    3.3 剩余参数保存的值是以数组形式保存的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    …展开
    在这里插入图片描述
    在这里插入图片描述
    区别:就是看…的位置 形参的位置———>收集剩余参数 其他位置————>展开

箭头函数

  1. 箭头函数语法1: () => {} 等价于 function() {}
  2. 函数的组成
    2.1 函数名
    2.2 参数
    2.3 函数体
    2.4 返回值
  3. 箭头函数注意事项:
    3.1 如果只有且只有一个参数,可以省略()
    3.2 如果函数体只有一行代码,可以省略{}
    3.3 如果函数只有一行代码,返回值return 可以省略
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值