【js自学打卡2】

1.什么是闭包?

函数嵌套,内函数使用外函数定义的变量。

在内函数还在使用外函数的变量时值不会被释放。

(具有作用域的代码块=闭包)

优点/应用场景:

  • 变量不能通过外部访问,只能通过调用函数访问
  • for循环之类可能需要临时保存一下i值,后续继续使用(业务延时)
  • 防止变量污染,把变量放在局部作用域
  • 封装好方便对象共用闭包工具

(全局)变量污染

出现场景:

  • 全局变量的定义冲突(两个不同的地方定义了同名但不同作用的全局变量)
  • 更改全局变量但没有照顾到全局(有没能跟随变化的地方)

解决方法:

  • 少用全局变量,多用局部变量
  • 在一个统一的地方写全局变量
  • 每次更改完全局变量进行检查
  • 使用严格模式(严格模式下函数不能使用相同命名的变量)

关于严格模式的详解

关于作用域的详解

关于闭包的详解

2.var let const的区别

varletconst
作用域函数级

块级

块级

变量提升

(暂时性死区反过来)

存在

(未声明报undefined)

不存在

(报错)

不存在

(报错)

全局属性会变为全局对象的属性不会不会
可重复声明
初始值不需要不需要需要
指针指向(重新赋值)可以可以不可以

变量提升:在声明前就能使用

块级作用域:{}内,比如循环内部或者if条件内部

关于全局对象:

浏览器的全局对象是window。

3.抛出err的两种方法

throw new Error("这是报错信息");

try {
    // 可能会抛出错误的代码
} catch (error) {
    console.error(error.message); // 输出捕获到的错误信息
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值