我承认对于this和立即执行函数一无所知

以下代码会输出什么?
var x=3;
obj={x:5};
obj.fn= (function (){
 console.log(this.x,x)
 this.x*= ++x;
 return function(y){
   console.log(this.x,x)
   this.x*= (++x)+y;
   console.log(x);
 }
})();
var fn=obj.fn;
obj.fn(6);
fn(4);

输出为
3 3  line4
5 12 line7
13 line9
13 13 line7
234 line9

自己分析了很多,但删了,我觉得自己完全没理解this和立即执行函数。
我想知道有没有一种更加基本的方式来理解,为什么在上下文和this指向上,立即执行函数中return的函数表现的和直接使用这个函数一样,为什么在没有经过对象调用的情况下,立即执行函数体被跳过,只执行其return的函数。#前端##js#
全部评论
持续学习
2 回复 分享
发布于 2023-09-29 00:01 广东
var声明的变量会被挂载到全局变量window上,没有被跳过,函数也是一样的
1 回复 分享
发布于 2023-10-03 11:37 重庆
不知道能不能解答题主:这个中obj.fn一直指向的是return的函数,里边return之前的函数体只执行了一次,就是立即执行函数执行的时候,之后就一直的return的函数,然后this指向问题是如果是以方法的形式调用,this指向这个对象。
点赞 回复 分享
发布于 2023-09-27 11:10 广西
obj.fn的时候立即执行函数就执行了,然后返回里面的函数给obj.fn,后面再调用都是里面这个函数了
点赞 回复 分享
发布于 2023-09-25 16:49 上海
你这个输出不对吧
点赞 回复 分享
发布于 2023-09-25 16:43 上海

相关推荐

今天 11:18
门头沟学院 Java
作者先叠个甲:本人双非本,秋招拿到了多个大厂offer,这个过程也不容易,但是在看到很多秋招胜利之后说自己一路有多艰辛的文章,总感觉有一点不对劲,想了很久打算写一篇文章分析一下,本文仅代表作者观点,不认同的可以在评论区大家一起理性讨论。 秋招已经结束,各类社交平台出现一大批“大厂上岸”胜利结算。文章的叙事逻辑高度相同,开篇就渲染焦虑和困惑,学习时的挑灯夜读、投递时的屡屡碰壁、面试时的如履薄冰,将过往经历包装成一步艰辛的“奋斗史”,然后最终以大厂offer的胜利结尾,字里行间全是苦尽甘来的优越感。但是在我看来,这类文章的本质是结果导向的、带有浮夸的叙事,因为其内核不是分享经验,而是借“苦难”之名...
创作小队长:你的批判视角非常犀利,尤其“结果决定叙事权”的洞察非常精准,哈哈想邀请你来成为我们的创作者🫰 但我想补充一个视角:许多分享者的初衷并非炫耀结果或者苦难,我更愿意相信他们在这个过程中付出了很多,在这场战役结束后,他们迫不及待地想被看到,记录和分享都是给自己的一个交代,而非真的教会别人什么,他们的初衷未必是想制造焦虑。求职市场的残酷、经济环境的下行、世俗价值观才是这种叙事流行的土壤,作为一个普通人无法抵抗洪流。 感谢你发起这场讨论。理想的社区,既需要这样锐利的批判来保持清醒,你的洞察非常犀利,也许会启发一些人,能逐渐改变这种叙事~
点赞 评论 收藏
分享
评论
5
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务