首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否有可能在箭头函数中获得this以及全局this?

在箭头函数中,是不可能通过使用this关键字来获取函数的执行上下文(即函数自身的this值)的。箭头函数会继承其父级作用域的this值,无法被改变或重新绑定。相比之下,普通函数的this值会根据调用方式的不同而变化。

在全局环境中,箭头函数也无法获取全局的this值。在浏览器环境中,全局this指向window对象,在Node.js环境中,全局this指向global对象。然而,箭头函数不会继承这些全局对象的this值。

正因为箭头函数无法获取自己的this值,它们通常用于需要保留当前上下文的情况,例如在回调函数或嵌套函数中。

对于如何在箭头函数中获得this值的需求,可以考虑以下解决方案:

  1. 使用普通函数而不是箭头函数,以便在函数内部获得正确的this值。
  2. 在箭头函数外部将this值保存到变量中,并在箭头函数内部使用该变量。

关于箭头函数和this的更多信息,可以参考以下链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++设计模式之SFINAE:用来检测类是否某个成员函数

针对类特定成员函数的检测其实在工作也可能用到。C++可以用SFINAE技巧达到这个目的。...在这个过程,我发现有些常见的SFINAE写法是问题的,下面探讨一下。 举个例子,我们来check一下C++标准库的类中有没有push_back()成员函数。...两个Helper类的模板参数。第二个参数为 push_back的函数指针类型。之所以弄了两个Helper,是因为std::string的push_back的参数为char。...因为网上能找到的各种SFINAE的实现版本,很多对于push_back的检测都是问题的。 而以上列举这两种,都能准确检测出string、vector、list的push_back()。...has_hello::value << std::endl; std::cout ::value << std::endl; } OK,这个用来检测类是否

3.9K20
  • 【Groovy】集合遍历 ( 调用集合的 any 函数判定集合是否指定匹配规则的元素 | 代码示例 )

    文章目录 一、集合的 any 函数 二、集合的 any 函数代码示例 一、集合的 any 函数 ---- 集合的 any 函数 , 用于判断集合是否 满足闭包的条件 的元素 , 返回一个布尔值 ,...集合 , it 的类型是集合元素类型 String ; 如果找到了 匹配闭包的条件 的元素 , 则返回true ; 否则 , 返回 false ; 集合的 any 函数运行 : /**...* 迭代iterable的内容,并检查谓词是否至少对一个元素有效...// 为 ArrayList 设置初始值 def list = ["Java", "Kotlin", "Groovy", "Gradle"] // 查找集合是否...list.any{ it == "Java" } // true println isMatch // 查找集合是否

    1.2K20

    【C++】C++ 类的 this 指针用法 ③ ( 全局函数 与 成员函数 相互转化 | 参构造函数设置默认参数值 | 返回匿名对象与返回引用 )

    , 这个增加的参数是 对象本身的指针 ; 在 Student 类 , 定义了如下函数 : // 成员函数 转为 全局函数 , 多了一个参数 Student* pThis 作为第一个参数 void..., 就是通过 this 指针隐藏左操作数 , 对象本身 就是 左操作数 , 在成员函数 , 通过 this 指针访问对象本身的成员 ; 在全局函数 , 实现两个 Student 类相加 , 接收两个..., 只能调用上述 参构造函数 , 如果使用 Student s2 的方式调用 默认构造函数 创建 Student 对象 , 就会报错 ; 如下带参数的构造函数 , 并且为其 参构造函数 的参数 设置一个默认值..., 则返回 Student 引用即可 ; // 成员函数, 将两个 Student 对象相加 // 全局函数 转为 成员函数 , 少了一个参数 // 两个 对象相加 , 最终结果累加到 本对象...Student s(18, 180); // 打印对象情况 s.print(); // 调用参构造函数 , 参构造函数参数使用默认值 Student s2; s2.print();

    20520

    再说this

    我们可以用类似的方法获得随机三篇文章,并且计算距离好友生日的天数。 函数式的方式是:将原始数据传递给一个函数或者多个函数获得对你的项目有用的数据格式。 4....终于——this 是什么 this 在不同的环境可以指代不同的东西。默认的全局环境 this 指代的是全局对象(在浏览器 this 是 window 对象),这没什么太大的用途。...到此为止,我们看到了为什么要使用 this,以及为什么要明确地绑定 this。最后我们来介绍一下,this 实际上是箭头函数。 8. 箭头函数 你也许注意到了箭头函数最近很流行。...也许,判断函数是否“在对象的上下文中调用”的好方法就是检查一遍函数的调用过程,看看是否个对象“依附”到了函数上。 我们来检查下执行 bobRossObj.onFriendClick() 时的情况。...箭头函数是在 greeting 定义的。我们知道,在 greeting 内部的 this 指向对象本身。因此,箭头函数内部的 this 也指向对象本身,这正是我们需要的结果。 9.

    58120

    字节前端高频面试题

    ,这个函数的this就永远指向它定义时所处的全局执行环境的this,即便这个函数是作为对象obj的方法调用,this依旧指向Window对象。...在箭头函数访问arguments实际上获得的是它外层函数的arguments值。...window对象的属性拥有全局作用域全局作用域很大的弊端,过多的全局作用域变量会污染全局命名空间,容易引起命名冲突。...箭头函数和普通函数啥区别?箭头函数能当构造函数吗?普通函数通过 function 关键字定义, this 无法结合词法作用域使用,在运行时绑定,只取决于函数的调用方式,在哪里被调用,调用位置。...(取决于调用者,和是否独立运行)箭头函数使用被称为 “胖箭头” 的操作 => 定义,箭头函数不应用普通函数 this 绑定的四种规则,而是根据外层(函数全局)的作用域来决定 this,且箭头函数的绑定无法被修改

    32010

    浅浅的分析下es6箭头函数

    适用场景 以下逻辑参考《你不知道的js》,请根据自己的需要进行选择是否使用箭头函数。 ?...不适用场景 定义对象方法 一般情况下如果想定义对象下的函数,是多少涉及使用对象的其他属性的,如果用箭头函数会因为对象无法形成作用域,没有相关上下文,导致this指向全局。...特别需要说明的一点是,如果你对象属性方法需要定义方法,同时想使用对象属性,那么此时建议使用箭头函数。...比如以下场景: 1 业务或者语法判断过于复杂 2 返回值情况很复杂 建议 尽管箭头函数和let、const以及一些es6语法变得风行,甚至于有些人觉得用箭头函数就觉得自己的技术进阶了,其实不然,大多人人还是停留在了它写法上的便利...总之,个人的建议是:上面提到的几种不适合的场景不要用箭头函数箭头函数适用于那些参数业务逻辑以及返回值都简单的方法的实现。

    34610

    面试官问:JS的this指向

    读者可以先拉到底部看总结,再谷歌(或各技术平台)搜索几篇类似文章,看笔者写的文章和别人什么不同(欢迎在评论区评论不同之处),对比来看,验证与自己现有知识是否盲点,多看几篇,自然就会完善自身知识。...箭头函数没有this绑定,必须通过查找作用域链来决定其值。如果箭头函数被非箭头函数包含,则this绑定的是最近一层非箭头函数的this,否则this的值则被设置为全局对象。...如果没有普通函数,则是全局对象(浏览器则是window)。也就是说无法通过call、apply、bind绑定箭头函数的this(它自身没有this)。...优先级 而箭头函数的this是上层普通函数的this或者是全局对象(浏览器是window),所以排除,不算优先级。...一定要注意,有些调用可能在无意中使用普通函数绑定规则。如果想“ 更安全” 地忽略 this 绑 定, 你可以使用一个对象, 比如ø = Object.create(null), 以保护全局对象。

    75320

    论普通函数箭头函数的区别以及箭头函数的注意事项、不适用场景

    箭头函数的this指向在定义的时候继承自外层第一个普通函数的this。 下面栗子在一个函数定义箭头函数,然后在另一个函数执行箭头函数。...,以及用一个变量接收其他剩余参数的示例。...此属性主要:用于确定构造函数是否为new调用的。...* 行数较多 * 函数内部大量操作 文章内容小结: 普通函数箭头函数的区别: 箭头函数没有prototype(原型),所以箭头函数本身没有this 箭头函数的this在定义的时候继承自外层第一个普通函数的...--- 结语 呕心沥血,可以说是很全了,反正第一次问到我的时候只能想到箭头函数的this是继承而来的,以及语法上的简洁性,其他的我都不知道,希望这篇文章能够帮助各位同学学到知识。

    1.6K00

    Linux并发与同步

    函数被调用的时候,该函数获得控制权,成为激活(active)函数,然后运行该函数的指令。与此同时,其它的函数处于离场状态,并不运行。如下图所示: ?...Linux从程序到进程 我们看到,各个方块之间由箭头连接。各个函数就像是连在一根线上一样,计算机像一条流水线一样执行各个函数定义的操作。这样的一个程序叫做单线程程序。...我们这里的if结构会给CPU两个指令, 一个是判断是否剩余的票(i != 0), 一个是卖票 (i = i -1)。...某个线程会先判断是否有票(比如说此时i为1),但两个指令之间存在一个时间窗口,其它线程可能在此时间窗口内执行卖票操作(i = i -1),导致该线程卖票的条件不再成立。...互斥锁一般被设置成全局变量。打开的互斥锁可以由某个线程获得。一旦获得,这个互斥锁会锁上,此后只有该线程有权打开。其它想要获得互斥锁的线程,会等待直到互斥锁再次打开的时候。

    2K90

    每天10个前端小知识 【Day 11】

    原型对象保存着实例共享的方法,一个指针constructor指回构造函数。 js只有函数 prototype 属性,所有的对象只有 proto 隐式属性。 那这样到底什么不一样呢?...箭头函数和普通函数啥区别?箭头函数能当构造函数吗? 什么是箭头函数?...`; }; 可以看出,定义箭头函在数语法上要比普通函数简洁得多。箭头函数省去了function关键字,采用箭头=>来定义函数函数的参数放在=>前面的括号函数体跟在=>后的花括号。...对象obj的方法b是使用箭头函数定义的,这个函数的this就永远指向它定义时所处的全局执行环境的this,即便这个函数是作为对象obj的方法调用,this依旧指向Window对象。...6、箭头函数没有自己的arguments 箭头函数没有自己的arguments对象。在箭头函数访问arguments实际上获得的是外层局部(函数)执行环境的值。

    12310

    JS的this指向问题

    全局上下文 非严格模式和严格模式this都是指向顶层对象(浏览器是window)。...箭头函数没有this绑定,必须通过查找作用域链来决定其值。 如果箭头函数被非箭头函数包含,则this绑定的是最近一层非箭头函数的this,否则this的值则被设置为全局对象。...如果没有普通函数,则是全局对象(浏览器则是window)。 也就是说无法通过call、apply、bind绑定箭头函数的this(它自身没有this)。...优先级 而箭头函数的this是上层普通函数的this或者是全局对象(浏览器是window),所以排除,不算优先级。...一定要注意,有些调用可能在无意中使用普通函数绑定规则。 如果想“ 更安全” 地忽略 this 绑 定, 你可以使用一个对象, 比如ø = Object.create(null), 以保护全局对象。

    1.3K30

    看完这几道 JavaScript 面试题,让你与考官对答如流(

    为什么在调用这个函数时,代码的b会变成一个全局变量? 40. ECMAScript是什么? 41. ES6或ECMAScript 2015哪些新特性?...在箭头函数版本,我们只需要()括号,不需要 return 语句,因为如果我们只有一个表达式或值需要返回,箭头函数就会有一个隐式的返回。...所以调用第一个getArgs函数会抛出一个错误。相反,我们可以使用rest参数来获得箭头函数传递的所有参数。...它捕获词法作用域函数的this值,在此示例,addAll函数将复制computeResult 方法的this值,如果我们在全局作用域声明箭头函数,则this值为 window 对象。 44....模块使我们能够将代码基础分割成多个文件,以获得更高的可维护性,并且避免将所有代码放在一个大文件。在 ES6 支持模块之前,两个流行的模块。

    2K10

    前端面经(1)

    共同点: 都会在浏览器端保存,大小和同源限制 不同点: 一、cookie数据始终在同源的http请求携带,即cookie在浏览器和服务器间来回传递。...使用 BOM,开发者可以移动窗口、改变状态栏的文本以及执行其他与页面内容不直接相关的动作。 DOM 是指文档对象模型,通过它,可以访问HTML文档的所有元素。 DOM 是 W3C的标准。...2.另外,若不设置key还可能在列表更新时引发一些隐蔽的bug 3. vue在使用相同标签名元素的过渡切换时,也会使用到key属性,其目的也是为了让vue可以区分它们, 否则vue只会替换其内部属性而不会触发过渡效果...普通函数箭头函数的区别 1.箭头函数是匿名函数,不能作为构造函数,不能使用new 2.箭头函数不绑定arguments,取而代之用rest参数...解决 3.箭头函数不绑定this,会捕获其所在的上下文的...1) 在方法,this表示该方法所属的对象 2) 在单独使用的情况下,this代表的是全局对象 3) 在函数,this表示的是全局对象 4) 在函数但是在严格模式下,this为未定义(undefined

    50120

    《你不知道的JavaScript》-- this(笔记)

    2.2 隐式绑定 当函数引用上下文对象时,隐式绑定规则会把函数调用的 this 绑定到这个上下文对象: function foo(){ console.log(this.a); } var...调用的 this 上。 3. 优先级 可以按照下面的顺序进行判断: 1)函数是否在 new 调用(new 绑定)?...如果是的话,this 绑定的是指定的对象; 3)函数是否在某个上下文对象调用(隐式绑定)?...this(比如第三方库的一个函数),那默认绑定规则会把 this 绑定到全局对象,这将导致一些不可预计的后果(比如修改全局对象)。...--箭头函数箭头函数不是使用 function 关键字定义的,是使用被称为“胖箭头”的操作符 “=>” 定义的,箭头函数不使用 this 的四种标准规则,而是根据外层(函数全局)作用域来决定 this

    28920
    领券