前端面试——关于this指向问题?

这篇具有很好参考价值的文章主要介绍了前端面试——关于this指向问题?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

想要知道关于this的指向问题,首先要了解this的绑定规则。那么this到底是什么样的绑定规则呢?一起来研究一下吧!

绑定一:默认绑定

绑定二:饮食绑定

绑定三:显示绑定

绑定四:隐式绑定

1. 默认绑定

什么情况下使用默认绑定呢?独立函数调用。独立的函数调用我们可以理解成函数没有绑定到某个对象上调用:

首先在非严格模式下,this指向全局对象。在严格模式下,函数内的this指向undefined,全局中的this指向不会改变。

1.1 严格模式下的默认绑定

举个栗子:

"use strict";
 
// var 定义的变量 a 挂载到 window 对象上
var a = 10;
 
function foo () {
  // 严格模式下,函数内 this 指向 undefind
  console.log('this1 --- ', this) // undefined
 
  // 报错,Uncaught TypeError: Cannot read properties of undefined (reading 'a')
  console.log(this.a) 
 
  console.log(window.a) // 10
}
 
// 严格模式 不会改变全局中 this 的指向
console.log('this2', this) // window
 
foo();

1.2 let、const、var 变量的默认绑定

let、const声明的全局变量,不会绑定到window上

var声明的全局变量,会被绑定到window上

let a = 10
const b = 20
 
function foo () {
  console.log(this.a) // undefined
  console.log(this.b) // undefined
}
 
foo();
 
console.log(window.a) // undefined  

1.3 函数作用域中的this指向

关键点:

  • 要判断函数是谁调用的,进而确定this绑定的作用域是哪儿个
  • 要确定好打印的函数内部的变量。还是this上的变量(打印a、打印this.a不一样
// window 中的 a
var a = 1;
 
function foo () {
  // 函数中的 a
  var a = 2
 
  console.log(this) // Window{...}
 
  // 打印的是 this.a,不是 a,因此是 window 下的 a(是 window 调用的 foo 函数)
  console.log(this.a) // 1
}
 
foo()

再举个例子:

var a = 1
 
function foo () {
 
  var a = 2
 
  function inner () {
    // inner 内没有 a,因此往上面的 foo 的函数作用域找
    // foo 内有 a,但是 foo 是 window 调用的,foo 内的 this 就是 window
    // 打印的是 this a,不是 a,因此要判断正确的 this,也就是 window
    // 最终输出 1
    console.log(this.a)
  }
 
  inner()
}
 
foo()

2. 隐式绑定

当函数引用有上下文对象时,如obj.foo()的调用方式,foo()

。。。。。还没写完文章来源地址https://www.toymoban.com/news/detail-822124.html

到了这里,关于前端面试——关于this指向问题?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • react关于类组件this指向

    文章目录 前言: 绑定方式: 一、手动绑定 this: 二、使用箭头函数: 常见问题: 总结: 在 React 中,类组件中 this 的指向和普通的 JavaScript 类相同,指向当前实例对象。但是,在事件处理函数中,this 的指向会有所不同。 当我们使用类组件的时候,事件处理函数中的 this 默认

    2024年02月08日
    浏览(29)
  • JS中this的指向

    this永远指向一个对象 this的指向完全取决于函数调用的位置 JavaScript支持运行环境动态切换,this的指向是动态的 全局上下文(Global Context) 在全局执行环境中(在任何函数体外部),this都是指向全局对象,在浏览器中,window对象即是全局对象。 函数上下文(Function Context)

    2024年02月07日
    浏览(27)
  • JS 能改变this指向的方法

    JavaScript中的this非常重要,它用于引用当前函数所属的对象。但是,有时候我们需要在不同的上下文中使用相同的函数,这就需要改变this指向。在JavaScript中,有几种方法可以实现这一目标。 call方法是JS中最基本的改变this指向的方法之一。它允许您将一个函数作为另一

    2024年02月08日
    浏览(29)
  • Js:apply/call/bind、作用域/闭包、this指向(普通,箭头,JS/Vue的this)

    共同点: apply()、call() 和 bind() 方法 三者作用都是 改变this指向。 接收的第一个参数都是this要指向的对象 区别: apply只有两个参数,第二个参数为数组; call和bind传参相同,多个参数依次传入的; call和apply都是对函数进行直接调用(立即执行),而bind方法不会立即调用函数

    2023年04月08日
    浏览(82)
  • web前端Javascript—7道关于前端的面试题

    本文主要是web前端Javascript—的面试题,附上相关问题以及解决答案,希望对大家web前端Javascript闭包的学习有所帮助。 每个JavaScript 程序员都必须知道闭包是什么。在 JavaScript 面试中,你很可能会被问到的问题 以下是 7 个有关 JavaScript的面试题,比较有挑战性。不要查看答案

    2024年02月03日
    浏览(79)
  • this指向性问题

    this的查找规则会逐层往上查找,最终位全局window 优先级问题:显式绑定(显式绑定与new绑定没有可比性)new绑定隐式绑定默认绑定 在编程中,this 是一个,代表当前对象或者函数的执行环境。this 的指向性问题是指在不同的情况下,this 指向的对象不同,从而影响代码的

    2024年02月11日
    浏览(31)
  • 关于微软Microsoft 365 开发中心 邮箱域 CNAME‎(别名)解析指向记录冲突的问题解决办法!

    关于微软Microsoft 365开发中心 邮箱域的DNS添加 CNAME‎(别名)解析指向记录,CNAME冲突的问题解决办法!  先说明问题,如下图: 我用的是华为平台域名解析:  一直出现   CNAME‎(别名)指向冲突! 按照微软的要求怎么也添加不上   CNAME‎(别名)记录 ----------------试过许

    2024年02月02日
    浏览(33)
  • 前端面试问题-JavaScript

    1 闭包 闭包就是能够读取其他函数内部变量的函数 闭包是指有权访问另⼀个函数作⽤域中变量的函数,创建闭包的最常⻅的⽅式就是在⼀个函数内创建另⼀个函数,通过另⼀个函数访问这个函数的局部变量,利⽤闭包可以突破作⽤链域 闭包的特性: 函数内再嵌套函数 内部函

    2024年02月15日
    浏览(36)
  • 前端关于学习方式,解决问题的面试题(本人真实面试题)

    本文旨在 为大家平时面试解答提供思路 和 介绍平时学习,解决问题的方法。 1、如何解决Echarts难使用的问题 深入学习文档: ECharts 的官方文档是非常详细和全面的。仔细阅读文档,深入理解配置项和 API,可以帮助你更好地使用 ECharts。 查看示例和案例: ECharts 官方网站提

    2024年01月21日
    浏览(65)
  • React之组件的分类、使用,事件对象,this指向问题,修改状态以及受控组件与非受控组件

    组件是 React 开发(现代前端开发)中最重要的内容 组件允许你将 UI 拆分为独立、可复用的部分,每个部分都可以独立的思考 组合多个组件(组装乐高积木)实现完整的页面功能 特点:独立、可复用、可组合 组件包含三部分:HTML/CSS/JS 展示页面中的可复用部分 函数组件:使

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包