js中使用箭头函数以及setTimeout时this的指向问题

1.函数this指向

直接创建一个函数和new一个函数,this的指向问题

javascript 复制代码
    // 创建一个函数
    function test() {
      console.log(this, "this");
    }

    // 1.通过new的方式调用 this指向的是函数本身
    let t = new test()

    // 2.直接使用 this指向的是全局
    test()

2.函数内部使用箭头函数this的指向问题

在函数内部使用箭头函数this的指向是当前环境this,setTimeout内部使用普通函数this的指向是全局

来看第一种情况 我们通过new一个函数来观察内部this指向问题,我们可以看到new一个函数this指向的是函数本身所以此时t.a的值是1,再来区分setTimeout内部this问题,箭头函数内部this是指向当前作用域的this,普通函数setTimeout 指向的是全局作用域,所以打印为 undefined 和 1

javascript 复制代码
    // 函数内部setTimeout一个是箭头函数一个是普通函数调用this的区别
    function test() {
      this.a = 1
      setTimeout(function () {
        console.log(this.a, "---a"); // undefined 
      }, 0)

      setTimeout(() => {
        console.log(this.a, "---a"); // 1
      }, 0)
    }

    // 1.通过new的方式调用 this指向的是函数本身
    let t = new test()
  1. 我们通过直接调用函数来看this的指向

来看第二种情况 我们直接调用函数来观察内部this指向问题,直接调用函数this指向的是全局,所以此时全局中的a为1,所以此时内部setTimeout指向的都是全局作用域,所以打印为 1 和 1

javascript 复制代码
    // 函数内部setTimeout一个是箭头函数一个是普通函数调用this的区别
    function test() {
      this.a = 1;
      setTimeout(function () {
        console.log(this.a, "---a"); // 1
      }, 0)

      setTimeout(() => {
        console.log(this.a, "---a"); //1
      }, 0)
    }

    // 2.直接使用 this指向的是全局
    test()
相关推荐
福兮说8 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理9 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
专业程序开发源9 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
专业程序开发源9 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
小呆呆6669 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
凤城老人10 小时前
从 PyQt6 到 Electron:给 Edge TTS 做一个“多角色配音机“的踩坑手记
javascript·typescript·electron
Dovis(誓平步青云)10 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan10 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_11 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒11 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端