【发布时间】:2014-12-10 11:23:46
【问题描述】:
这是对您在 john resig 的 Learning Advanced Javascript 应用程序中找到的内容的改编。
var math = {
fact: function fact(n){
return n > 0 ? n * fact(n-1): 1;
},
fact1: function (n) {
return n > 0? n * math.fact1(n-1) : 1;
}
};
console.log(math.fact(5)); // 120
console.log(math.fact1(5)); // 120
var o = {
x: math.fact,
y: math.fact1
};
math = {};
console.log(o.x === undefined); // false
console.log(o.y === undefined); // false
console.log(o.x(5)); // 120
console.log(o.y(5)); // Uncaught TypeError: math.fact1 is not a function
人们会期望o.x(5) 应该抛出一个错误,但它会执行。为什么?
【问题讨论】:
-
我不明白你为什么会期待一个错误......
-
o.y(5)抛出错误......所以不应该o.x(5)?
标签: javascript function closures function-expression