关于《Eloquent JavaScript》中高阶函数变量m、n赋值的技术咨询
理解JavaScript中的高阶函数与闭包:greaterThan示例解析
我们一步一步拆解这段代码的执行逻辑,搞懂m和n的赋值:
定义高阶函数
greaterThanfunction greaterThan(n) { return m => m > n; }这是一个高阶函数——它的返回值是另一个函数。这里的
n是外层函数的参数,当你调用greaterThan时,这个参数会被赋值,并且会被返回的箭头函数“记住”(这就是闭包的特性)。创建
greaterThan10函数let greaterThan10 = greaterThan(10);调用
greaterThan(10)时,n被赋值为10,函数返回箭头函数m => m > 10(因为闭包保留了n=10)。此时greaterThan10就是这个箭头函数,它的逻辑已经固定为“判断输入值是否大于10”。调用
greaterThan10并输出结果console.log(greaterThan10(11)); // → true调用
greaterThan10(11)时,箭头函数的参数m被赋值为11,然后执行比较11 > 10,结果为true,所以控制台输出true。如果传入9,9 > 10不成立,就会返回false。
总结变量赋值逻辑:
n是外层greaterThan函数的参数,在调用greaterThan(具体数值)时被赋值,这个值会通过闭包被返回的箭头函数永久保留。m是返回的箭头函数的参数,在调用greaterThan10(具体数值)时被赋值,用于和保留的n做大小比较。
内容的提问来源于stack exchange,提问作者Woody 1470
相关产品推荐
相关产品推荐

