第一:
<script>
uniqueID = (function() {
var id = 0;
return function() { return id++; };
})();
alert(uniqueID());
alert(uniqueID());
alert(uniqueID());
</script>
第二:
<script>
uniqueID = function() {
var id = 0;
return function() { return id++; };
};
alert(uniqueID());
alert(uniqueID());
alert(uniqueID());
</script>
第三:
<script>
uniqueID = function() {
var id = 0;
return function() { return id++; };
};
alert(uniqueID);
alert(uniqueID);
alert(uniqueID);
</script>
第四:
<script>
var uniqueID = (function() {
var id = 0;
var inft = function() { return id++; }
return inft;
})();
alert(uniqueID());
alert(uniqueID());
alert(uniqueID());
</script>
第五:
<script>
var uniqueID = (function() {
var id = 0;
var inft = function() { return id++; }
return inft();
})();
alert(uniqueID());
alert(uniqueID());
alert(uniqueID());
</script>
第六:
<script>
var uniqueID = (function() {
var id = 0;
var inft = function() { return id++; }
return inft();
})();
alert(uniqueID);
alert(uniqueID);
alert(uniqueID);
</script>
第八:
<script>
var uniqueID = function() {
var id = 0;
var inft = function() { return id++; }
return inft();
};
alert(uniqueID);
alert(uniqueID);
alert(uniqueID);
</script>
第一答案是 0 1 2
(function(){})(); 这样的形式表示一开始就运行function这个匿名函数,而无需外部调用.所以uniqueID = function() { return id++; }; 但id是引用外部的var变量.所以外部的var一直没法给内存回收. 所以每次return id的时候,就会在内存里面寻找id这个变量. 最后将它返回给调用函数
第2答案是 function() { return id++; };
将一个内部的匿名函数的引用作为结果返回
第3是function() {
var id = 0;
return function() { return id++; };
};
UniqueId就是 对function的引用.所以输出来就是function的结构体
第4 同第1
其实就是将原先的匿名函数,分配了函数名
第5 应该有错 ..过程类似第1 . 但它返回的是一个数字 uniqueID = 0 . 所以uniqueID()是出错D
第6 0 解释同 5
第7 将function结构体输出