ecmascript 6+(1)

scope

局部作用域(local)

分函数作用域和块作用域

var不会产生块作用域

全局作用域(global)

函数内部可以使用全局变量

函数内变量未声明则为全局变量

作用域链

本质上是底层变量查找机制

函数执行时,优先当前函数作用域变量;如果查不到,依次逐级查找父级作用域直到全局作用域

嵌套关系的作用域嵌套形成作用域链

子作用域能访问父作用域,父作用域不能访问子作用域

GC(垃圾回收机制)

内存生命周期

内存分配(声明变量、函数、对象时自动分配)-内存使用(读写内存,即使用函数等)-内存回收(自动回收不再使用的内存)

全局变量一般不回收,关闭网页会回收

局部变量不用就会回收

内存泄漏:内存未被回收

js回收机制:

算法1:引用计数法(循环引用时会泄漏)

算法2:标记清除法(从根部查找,找不到则删除)

闭包(closure)

闭包=内部函数+外层函数变量(必须捆绑在一起)

作用外部函数也可以访问函数内部变量

基本格式:

function outer() {
  let i=1
  function fn() {
  console.log(i)
}
  return fn
}

const fun = outer() //将 function fn() {} 给了fun
fun() //可以调用fn

应用:函数调用次数(好处是参数不被篡改,实现数据私有)会出现泄漏

变量提升(即限于var)

把所有var声明的变量提升到当前作用域最前面,只提升声明,不提升赋值

动态参数

伪数组arguments会储存传进函数中的所有参数,仅存在于函数中

剩余参数

function fn(a,d,...arr){
}

...为语法符号,在形参最后,arr是含有剩余参数的数组(在函数参数中使用)

注意:arr是真数组

展开运算符

符号为 ...,和剩余参数语法符号相同,用于展开数组,获得所有元素

箭头函数

简化函数表达式且不绑定this,从自己作用域上一层寻找this

const fn = () =>{

}
//如果只有一个参数,可写为
const fn = x =>{

}

fn(1)//调用

数组解构

将数组单元值快速批量赋值给一系列变量(支持多维数组)

const arr =[1,2,3]
const [a,b,c] = arr

可以设置默认值

例子:

交换两变量 

let a=1
let b=2; //出现[]符号,需要加 ; 隔开(类似的还有立即执行函数)
[a,b] = [b,a]

对象解构

对象属性的值必须赋值给(对象)属性名相同的变量

const user = {
  uname: '小明',
  age: 18
}

const {uname, age} = user

可以更改解构的变量名,用冒号赋值

const user = {
  uname: '小明',
  age: 18
}

const {uname: name, age} = user 

数组对象解构

const pig = [
  {
    uname:'tom',
    age: 18
}
]

const [{ uname, age }] = pig

多级对象解构

指明属性

const pig = {
    uname:'tom',
    family: {
      mother: 'one',
      father: 'two'
  },
    num: 3
}


const {uname, family: { mother, father }} = pig

遍历数组(forEach)

调用每个元素,传递给回调函数(与map不同,不返回新数组)

const arr = ['red','green','pink']

arr.forEach (function (items, index) {
 
})

构造函数

用来创建对象

function People (uname, age) {
  this.uname = uname
  this.age = age
}

const p1 = new People('Tom', 18)

实例化过程

new的作用

1.创建新对象

2.构造函数的this指向新对象

3.执行构造函数,修改this指向的属性

4.返回新对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

象更

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值