第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第17天 BAT大牛帶你橫掃初級(jí)前端JavaScript面試(第二版)

標(biāo)簽:
JavaScript

学习课程名称:BAT大牛带你横扫初级前端JavaScript面试(第二版)
章节名称:作用域和闭包(新版)
讲师姓名:双越


课程内容:

  1. 作用域和自由变量
  2. 闭包
  3. this
  4. 原型中的this

作用域是什么?
代表着某个变量合法的使用范围

作用域分类:
全局作用域
函数作用域
块级作用域

自由变量:一个变量在当前作用域没有定义,但是被使用了
向上级作用域,一层一层一次寻找,直至找到为止
如果到全局作用域都没找到,则报错 xx is not defined

闭包的核心重点:函数定义的地方和函数执行的地方不一样。

闭包的两种情况:

  1. 函数作为参数被传递
  2. 函数作为返回值被返回

所有自由变量的查找,都会向上级作用域查找,不是在执行的地方!!!

闭包在实际开发中,有如下应用场景:
隐藏数据(不让外边去改变)

如何做一个简单的 缓存工具

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

const demo = createCache();
demo.set("a", 100);
console.log(demo.get("a"));

this 有如下应用场景,比较复杂(场景比较多)

  1. 作为普通函数 window
  2. 使用call apply bind 改变this的指向
  3. 作为对象的方法被调用 this即当前对象
  4. 在class 方法中被调用 this即创建的实例
  5. 箭头函数 取上级作用域的this

this这里有句话,一定要记住:“this在各个场景中,取什么样的值,是在函数执行的时候确认的,不是在函数定义的时候确认的”

手写bind

Function.prototype.bind = function () {
  // 将参数拆解为数组  列表转换为数组
  const args = Array.prototype.slice.call(arguments);

  // 获取this (数组第一项)
  const t = args.shift();

  // fn1.bind(...) 中的 fn1
  const self = this;

  // 返回一个函数
  return function () {
    return self.apply(t, args);
  };
};

// bind 示例验证
function fn1(a, b, c) {
  console.log("this", this);
  console.log(a, b, c);
  return "this is fn1";
}

const fn4 = fn1.bind1({ x: 100 }, 10, 20, 30);
const res1 = fn3();
console.log(res1);
//this, {x:100}
// 10,20,30
//this is fn1


图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消