javascript - 函数的返回值是函数时,这个返回值里面函数的参数和外层函数参数的联系?
本文介绍了javascript - 函数的返回值是函数时,这个返回值里面函数的参数和外层函数参数的联系?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
下面这只是个例,请问propertyName和object1,object2有什么联系?请推广到一般情况下
<script type="text/javascript">
function createComparisonFunction(propertyName) {
return function(object1, object2){
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if (value1 < value2){
return -1;
} else if (value1 > value2){
return 1;
} else {
return 0;
}
};
}
var data = [{name: "Zachary", age: 28}, {name: "Nicholas", age: 29}];
data.sort(createComparisonFunction("name"));
alert(data[0].name); //Nicholas
data.sort(createComparisonFunction("age"));
alert(data[0].name); //Zachary
</script>
解决方案
也不分析那么多了,直接来看一下你这函数的执行步骤吧。
申明了一个变量data;
申明了一个函数createComparisonFunction;
变量data赋值了一个数组引用;
-
data数组调用自身的sort方法,并传入了一个立即执行函数
4.1 立即执行函数执行接收一个参数propertyName,并返回闭包中一个匿名函数 4.2 sort开始快排,每次比较双方大小的时候调用闭包中的匿名函数,并传入两个左右两个参数 4.2.1 匿名函数读取闭包中的propertyName变量并开始执行相关逻辑 // ...
后面的分析就不想写了,看到这里不知道题主明白了没有
核心是产生了一个闭包。
更新一个跟闭包相关的文档,让题主更方便理解
闭包是指那些能够访问独立(自由)变量的函数 (变量在本地使用,但定义在一个封闭的作用域中)。换句话说,这些函数可以记忆它被创建时候的环境。
https://developer.mozilla.org...
这篇关于javascript - 函数的返回值是函数时,这个返回值里面函数的参数和外层函数参数的联系?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文