首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript评估问题(第2部分)

Javascript评估问题(第2部分)
EN

Stack Overflow用户
提问于 2010-11-19 18:27:29
回答 5查看 129关注 0票数 2
代码语言:javascript
复制
(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值,对吗?

谢谢你的帮助!

请注意,这些是我为准备考试而练习的书后面的额外问题,这些不是直接的家庭作业问题。

EN

回答 5

Stack Overflow用户

发布于 2010-11-19 18:32:15

g(f)的例子中,函数f不是计算的,而是作为对象/值传递的。函数是javascript中的值,可以这样传递。函数g稍后通过表达式h(x)计算函数f (因为f作为参数h传递)。

下面是一个更直接的例子

代码语言:javascript
复制
var addOne = function(x) { return x+1; }
var f = addOne;
var value = f(4); // Returns 5
票数 1
EN

Stack Overflow用户

发布于 2010-11-19 18:32:48

它有助于更好的格式化和缩进,以便更容易地研究正在发生的事情:

代码语言:javascript
复制
(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
            })()
        })()
    })()
})()
票数 1
EN

Stack Overflow用户

发布于 2010-11-19 18:33:10

函数中定义的变量的作用域为该函数。如果这真的是针对一个类的话,你可能应该从那里找出剩下的部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4228166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档