(function () {
var x = 5;
(function () {
function f(y) { return (x+y)-2 };
(function () {
function g(h) { var x = 7; return h(x) };
(function () { var x=10; z=g(f); })();
})();
})();
})();为了准备下一次考试,我正在通过课堂课本上的一些问题,不知道上面的评价是怎样的。
大多数情况下,我不理解调用z=g(f),因为当f被计算时,它没有提供一个参数,那么它是如何计算的呢?它怎么知道y是什么?g(f)将评估什么?
此外,就范围划分而言,我认为javascript将所有东西都视为全局变量,所以最后设置的x将是函数f中使用的x值,对吗?
谢谢你的帮助!
请注意,这些是我为准备考试而练习的书后面的额外问题,这些不是直接的家庭作业问题。
发布于 2010-11-19 18:32:15
在g(f)的例子中,函数f不是计算的,而是作为对象/值传递的。函数是javascript中的值,可以这样传递。函数g稍后通过表达式h(x)计算函数f (因为f作为参数h传递)。
下面是一个更直接的例子
var addOne = function(x) { return x+1; }
var f = addOne;
var value = f(4); // Returns 5发布于 2010-11-19 18:32:48
它有助于更好的格式化和缩进,以便更容易地研究正在发生的事情:
(function() {
var x = 5;
(function() {
function f(y) { // <-- y is the x from function g
return (x + y) - 2
};
(function() {
function g(h) {
var x = 7; // <-- local x is defined and passed to f
return h(x) // <-- h === f
};
(function() {
var x = 10;
z = g(f); // <-- f is passed to g
})()
})()
})()
})()发布于 2010-11-19 18:33:10
函数中定义的变量的作用域为该函数。如果这真的是针对一个类的话,你可能应该从那里找出剩下的部分。
https://stackoverflow.com/questions/4228166
复制相似问题