- 主题:这算是必包吗?
代码如下:
var array = [];
function add(num1,num2) {
var count = num1 + num2;
return function() {
return count;
};
};
for (var i = 1; i <= 5; i++) {
array.push(add(i, Math.round(Math.random() * 10 + i)));
}
for (var i = 0; i < array.length; i++) {
console.log(array[i]());
}
--
FROM 114.250.95.*
算。
不过您这个例子里没体现出闭包的用途:闭包主要是屏蔽私有变量的——可读,但写必须经过指定逻辑。
【 在 ename (ename) 的大作中提到: 】
: 代码如下:
: var array = [];
: function add(num1,num2) {
: ...................
--
FROM 183.95.135.*
谢谢
用途,比如我动态为li添加一个唯一标示,这个就可以做了。
【 在 nilnul 的大作中提到: 】
: 算。
: 不过您这个例子里没体现出闭包的用途:闭包主要是屏蔽私有变量的——可读,但写必须经过指定逻辑。
:
--
FROM 114.250.95.*
显然不算啊。
【 在 chwork 的大作中提到: 】
: 这种算不算:
: var Obj = (function (view) {
: var a = ****;
: ...................
--
FROM 123.123.254.*
在chrome里调试看看,可以查看运行时产生的闭包。
【 在 ename 的大作中提到: 】
: 代码如下:
: var array = [];
: function add(num1,num2) {
: ...................
--
FROM 58.251.255.*
自执行,无法调用。
【 在 chwork 的大作中提到: 】
: 这种呢:
: var Obj = (function (view) {
: var a = ****;
: ...................
--
FROM 123.123.254.*
不算。你这个是函数literal后紧跟着call。
【 在 chwork (work) 的大作中提到: 】
: 这种算不算:
: var Obj = (function (view) {
:
: ...................
--
FROM 183.95.135.*
也不算。
简言之,闭包必须在返回的函数里capture一个闭包内且在返回函数外部的变量。
C#这种语言里的field和property的用法,Js不支持,所以用闭包。可参考:YUI Model
【 在 chwork (work) 的大作中提到: 】
: 这种呢:
: var Obj = (function (view) {
: var a = ****;
: ...................
--
FROM 183.95.135.*