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

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数组操作,外部不可见

 

posted @ 2018-10-20 00:32  你今天学习了吗  阅读(449)  评论(0)    收藏  举报