作用域和闭包(五)常见面试题

1. 说一下对变量提升的理解

 分为变量定义和函数声明(和函数表达式的区别)

全局作用域和函数作用域或者是块级作用域(ES6)中,变量声明(var)和函数声明会被提升到作用域顶部,

而函数表达式不会,只是当做一个var变量提升,函数没有被提升,另外ES6 中 let 和 const标识符定义的变量

也不会发生提升(临时性死区TDZ)

 

2. this几种不同的使用场景

作为构造函数

作为对象属性

作为普通函数

call,bind,apply

箭头函数中(ES6)

 

3. 创建10个<a>标签,点击弹出对应序号

 

使用IIFE,每次都创建一个独立的函数,传入不同的i

或者ES6 let 循环

 

4. 如何理解作用域

(1)自由变量: 在当前作用域没有被定义的变量

(2)若在当前作用域找不到,则往父级作用域查找,自由变量的查找,父级作用域:函数定义时所在的上下文

(3)闭包两个场景,作为参数传入和函数返回值

 

5. 实际开发中闭包应用

// 用于封装变量,收敛权限

只有通过返回函数能对_list数组操作,外部不可见

 

转载于:https://www.cnblogs.com/aizzz/p/9820008.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值