Js中闭包等问题(转载)

第一道闭包问题

题目代码及答案

1
2
3
4
5
6
7
8
9
10
11
12
function fun(n,o) {
console.log(o)
return {
fun:function(m){
return fun(m,n);
}
};
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,?
var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?
var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined,?,?,?
//问:三行a,b,c的输出分别是什么?`

答案:

1
2
3
//a: undefined,0,0,0
//b: undefined,0,1,2
//c: undefined,0,1,1


详细解答地址

作者:小小沧海

第二道Js函数问题

题目代码及答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Foo() {
getName = function () { alert (1); };
return this;
}
Foo.getName = function () { alert (2);};
Foo.prototype.getName = function () { alert (3);};
var getName = function () { alert (4);};
function getName() { alert (5);}
//请写出以下输出结果:
Foo.getName();// 2
getName();// 4
Foo().getName();// 1
getName();// 1
new Foo.getName();// 2
new Foo().getName();// 3
new new Foo().getName();// 3


详细解答地址

作者:小小沧海