JS函数作为返回值的逻辑疑问:匿名函数参数来源解析
关于这段JavaScript代码的逻辑解析
你疑惑的核心点其实很直白,结合闭包特性拆解来看:
checkYears的本质就是那个匿名函数
当你执行const checkYears = yearToCheck(1912)时,yearToCheck函数会返回它内部定义的function(x, y),所以checkYears就是这个匿名函数的“别名”——换句话说,调用checkYears(参数),就等同于直接调用那个匿名函数并传入参数。匿名函数的参数接收逻辑
你调用checkYears(1900,1913)时,传入的1900会被匿名函数的第一个参数x接收,1913会被第二个参数y接收,这和普通函数调用传参的逻辑完全一致。闭包保留
year变量
而匿名函数里用到的year,是它从外层yearToCheck函数中“捕获”并保留下来的固定值1912——哪怕yearToCheck已经执行完毕,这个变量依然会被闭包留存,供匿名函数后续使用。
所以整个流程就是:checkYears作为匿名函数的引用,调用时传的参数直接交给匿名函数的x、y,再结合闭包保留的1912,完成区间判断。
内容的提问来源于stack exchange,提问作者Eduardo Tejeda
相关产品推荐
相关产品推荐

