继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第11天 前端工程师2022版 就业必备基础技术面试分析

大龄前端菜鸟
关注TA
已关注
手记 42
粉丝 6
获赞 6

课程名称:JS基础-作用域和闭包

课程章节:Javascript面试课

课程讲师: 双越

课程内容:


    学习课程之前,我们先来看一下这节会遇到哪些面试题?

        1、this的不同应用场景,如何取值?

        2、实际开发中闭包的应用场景

        3、创建10个 a 标签,点击时弹出对应序号。

        4、手写bind函数


    接下来我们一起看看知识点有哪些?

        1.作用域和自由变量

        

http://img2.mukewang.com/632340000001915307190703.jpg

◆全局作用域

◆函数作用域

◆块级作用域(ES6新增)

if while 等用{}包裹起来的都是块级作用域,在{}外使用就会报错

http://img3.mukewang.com/63234044000105a106510342.jpg

自由变量

◆一个变量在当前作用域没有定义,但被使用了

◆向上级作用域,一层一层依次寻找,直至找到为止

◆如果到全局作用域都没找到,则报错x is not defined

2.闭包

◆作用域应用的特殊情况,有两种表现:

◆函数作为参数被传递

◆函数作为返回值被返回

http://img1.mukewang.com/6323406d0001650911930574.jpg

// 所有的自由变量的查找,是在函数定义的地方,向上级作用域查找,不是在执行的地方         //100

3.this

◆作为普通函数

◆使用call apply bind

◆作为对象方法被调用

◆在class方法中调用

◆箭头函数

注:this取值在函数执行时确定,不是定义时确认


最后,我们来回顾一下面试题

1.this的不同应用场景,如何取值?

①当作普通函数被调用,直接返回 window

②使用 call apply bind  ,传入什么绑定什么

③作为对象方法调用,返回对象本身

④在 class 的方法中调用,当前实例的本身

⑤箭头函数,找上级作用域的this的值

2.手写bind函数

3.实际开发中闭包的应用场景,举例说明

隐藏数据,如做一个cache工具:

// 闭包隐藏数据,只提供API
function createCache() {
    const data = {}    //闭包中的数据,被隐藏,不被外界访问
    return {
        set: function (key, value) {
            data[key] = value
        },
        get: function (key) {
            return data[key]
        }
    }
}

const c = createCache()
c.set('a', 100)
console.log(c.get('a'));

4.场景题:创建10个标签,点击时弹出对应的序号

let a
for(let i = 0;i<10;i++){
    a=document.createElement('a')
    a.innerHTML = i + '<br>'
    a.addEventListener('click',function(e){
        e.preventDefault()
        alert(i)
    })
    document.body.appendChild(a)
}


手写 bind 函数没怎么看,有时间再啃


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP