function createComparisonFunction(propertyName) {
return function(obj1, obj2) {
//return function(aa) {
var v1 = obj1[propertyName];
var v2 = obj2[propertyName];
if (v1 < v2) {
return -1;
} else if (v1 > v2) {
return 1;
} else {
return 0;
}
//}
};
}
var compare = createComparisonFunction('name');
var result = compare(
{ name: 'Nicholas'},
{ name: 'Greg' }
);
//var aa = result('asdf');
compare = null;
alert(result);
为什么最后compare = null却还可以输出result为1?不是已经解除对匿名函数的引用了吗?
解决方案 »
- 在google和火狐中用jquery获取颜色为rgb,怎么转换成为#CCDDFF这种颜色呢
- jsp中遇到<mce:script language="javascript"><!-- 内容// --></mce:script> 是什么意思
- 用javascript如何制作图片滚动
- cookie的expires怎么获取?
- 两张图片间的选择(急急急急)
- WEB打印去除页眉页脚
- 悬浮的 黄颜色的 小提示信息窗口怎么搞
- 散分,谁知道怎么弄到特别号码?
- 有没有办法让showmodaldialog出来的页也能向自己commit?这样对话框功能会更完善。
- 如何将html页面里的text输入框的值和它周围的信息一起取出来
- 关于火狐使用$.get异步传输的问题。
- 求助,如何获得元素下的一个节点
result 只是接收了 compare函数的返回值。
他的翔还在result手里
var compare = function(obj1, obj2) {
//return function(aa) {
var v1 = obj1[propertyName];
var v2 = obj2[propertyName];
if (v1 < v2) {
return -1;
} else if (v1 > v2) {
return 1;
} else {
return 0;
}
//}
};
var result = compare(
{ name: 'Nicholas'},
{ name: 'Greg' }
);
//var aa = result('asdf');
compare = null;
alert(result);
其实是这么个东西, result和compare根本没有什么关系嘛
var compare = createComparisonFunction('name');
var result = compare(
{ name: 'Nicholas'},
{ name: 'Greg' }
);
//执行到这里的时候:
//compare已经被赋值为一个匿名函数“function(aa){...}”(由createCo...('name')返回所得);
//result则被赋值为1(由compare({name:....})所得); //至此compare和result有各自的值,且彼此没有关系,所以下面两行的结果如楼主所见
compare = null;
alert(result);