JS高级 第一天

1.声明变量三种关键字区别

​ var只有全局和局部作用域,没有块级作用域(如果写在块级作用域里,就是全局变量);let三个作用域都有

​ var定义的变量打印window,window下会有这个属性;而let定义的变量没有

​ var可以定义多个同名的变量,会覆盖前面的变量值;let如果定义多个同名的会报错

​ const和let差不多,但是const声明的变量不可以修改,一般用const声明常量

2.闭包

​ 一个作用域能够访问另一个作用域的局部变量,意思就是返回了一个子函数,这个函数可以访问他父级的变量,全局变量也可以使用这个局部变量 通常返回的子函数是匿名函数

​ 好处:扩大延伸了变量的使用范围

​ 闭包缺点:局部变量销毁不掉,过度使用造成内存

3.预解析

​ 变量预解析(变量提升):只解析声明变量的语句,把它提到当前作用域最前面 只定义不赋值

​ 函数预解析(函数提升):只解析定义函数语法的语句,把它提到当前作用域前面 只声明不调用

​ 变量只声明,不使用为undefined

​ 变量名和函数名相同的话,函数优先

​ let定义变量的话,在它赋值之前的称为暂时性死区(不能使用这个变量)

​ 变量为空是undefined,对象为空是null

4.参数

默认值

​ 形参和实参

​ 如果没有传实参,那么形参的值是undefined

​ 如果把其他某位的值传给别的形参,而它的又要用自己的默认值,这时把实参定为undefined

动态参数

​ 传的参数不固定用arguments,固定用形参的方式

​ arguments是函数内置的伪数组变量,不用定义,直接用即可

剩余参数

​ 也叫rest参数

​ 放到最后,它接收得是真数组,经常用它代替arguments

5.箭头函数

​ 形式:()=> { } 匿名函数,严格来说是表达式函数

​ 如果小括号里只有一个参数,可以省略小括号

​ 箭头函数如果大括号只有一行代码,省略大括号,并且自动返回结果

注意事项:

​ 箭头函数只能先定义后使用

​ 箭头函数中没有arguments,只能用剩余函数...

​ 箭头函数中this指向上级作用域

6.解构赋值

​ 解开数据结构赋值给相应的变量

数组解构

​ 形式:let [ ] = [ ]; 例如:let [a, b, c] = ['刘佳慧','你好','啊啊'];

​ 注意是一一对应关系

​ 数组解构:如果按需取值,用,占位即可

​ 如果是复杂形势的,也是按照一一对应关系,使用,分割

对象解构

​ 变量名当做属性名

​ 写在哪个地方都行,不是一一对应关系,无顺序排列,对象属性的值赋给属性名相同的变量

​ 对象中找不到与变量名一致的属性时的变量时为undefined

​ 如果外面有这个变量,要用:改名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值