javascript进阶语法,作用域,作用域链,闭包

作用域

全局作用域:在javaScript中,函数外部的所有作用范围都称为全局作用域

全局变量:在全局作用域中定义的变量,叫全局变量

全局变量特点:在全局作用域中的全局变量可以在任何地方被访问到

上代码:

<script>

let a = 123  //变量a是一个全局变量

function fn() {} //函数fn是一个全局变量 

let ary = []

</script>

局部作用域(函数作用域)

局部作用域:  在函数内部形成的作用范围称为局部作用域或者函数作用域

局部变量:    在局部作用域中定义的变量称为局部变量

局部变量特点:  局部变量只能在当前作用域中被访问

块级作用域

块级作用域: 在javaScript中,通过let关键字/const关键字 定义变量且位于{}中,就会形成块级作用域

块级作用域特点: 变量只能在当前块级作用域中被访问

{
let a = 123; console.log(a)
}

if(true) {
let userName = 'hhh'
}

作用域链

作用域链: 在javaScript中,多个作用域嵌套形成的一个链状结构

作用域链作用:  通过作用域链进行变量查找

闭包

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

闭包作用: 可以延长变量的使用生命周期

闭包总结:

闭包本质上就是一个函数

闭包函数就是在一个函数中访问另外一个函数中的变量

闭包函数的作用延长了变量的使用生命周期

const关键字

const关键字注意事项:

const定义常量时候必须设置初始值

const定义常量后,常量的值不能被修改

const定义常量名不能重复

const可以产生块级作用域

变量,函数提升

变量提升: 使用var关键字定义变量的时候,程序会先将变量的声明提升到当前作用域的开始,不包括赋值 函数提升: 定义函数的时候,程序会将函数的声明提升到当前作用域的开始位置,不包括函数的调用 let不存在变量提升

函数中arguments

arguments是函数中用来保存实参信息的一个数组

当函数中实参个数不确定的时候,可以通过arguments获取实参信息

函数中剩余参数

语法:  ...自定义参数名

作用: 用来获取多余的实参值 (类似于arguments)

注意事项:  

1 剩余参数必须写到函数形参的最后

2 剩余参数的名字是自定义的

3 剩余参数保存的值是以数组形式保存的

箭头函数(ES6语法)

箭头函数语法1: () => {}  等价于   function() {}

如果只有且只有一个参数,可以省略()

如果函数体只有一行代码,可以省略{}

如果函数只有一行代码,返回值return 可以省略

箭头函数中不能使用arguments,只能使用剩余参数

箭头函数中没有自己的this,this是父级作用域中的this

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值