JavaScript嵌套功能

我得到了一段JavaScript代码,我只是不明白:

function dmy(d) {
    function pad2(n) {
        return (n < 10) ? '0' + n : n;
    }

    return pad2(d.getUTCDate()) + '/' +
       pad2(d.getUTCMonth() + 1) + '/' +
       d.getUTCFullYear();
}

function outerFunc(base) {
    var punc = "!";

    //inner function
    function returnString(ext) {
       return base + ext + punc;
    }

    return returnString;
}

如何在另一个函数中定义函数? 我们可以从my()函数之外调用pad2()吗?

请说明一下。 谢谢


函数是JavaScript中的另一种类型的变量(当然有一些细微差别)。 在另一个函数内创建一个函数会改变函数的作用域,就像改变一个变量的作用域一样。 这对于使用闭包来减少总体全局名称空间污染尤为重要。

在另一个函数中定义的函数在函数外部是不可访问的,除非它们被附加到一个可在函数外部访问的对象:

function foo(doBar)
{
  function bar()
  {
    console.log( 'bar' );
  }

  function baz()
  {
    console.log( 'baz' );
  }

  window.baz = baz;
  if ( doBar ) bar();
}

在这个例子中,在foo函数运行后,baz函数将被使用,因为它被覆盖window.baz 。 除了foo函数中包含的范围之外,bar函数将不可用。

作为一个不同的例子:

function Fizz(qux)
{
  this.buzz = function(){
    console.log( qux );
  };
}

Fizz函数被设计为一个构造函数,以便在运行时为新创建的对象分配一个buzz函数。


它被称为封闭

基本上,其他功能中定义的功能只能在该功能中使用。 但可能会因此而被传递,然后可能会调用此结果。

这是一个非常强大的功能。 你可以在这里看到更多的解释:

Archive.org上的javascript_closures_for_dummies.html镜像


function x() {}

相当于(或非常相似)

var x = function() {}

除非我错了。

所以没有什么好玩的事情发生。

链接地址: http://www.djcxy.com/p/51595.html

上一篇: JavaScript Nested function

下一篇: What does it mean global namespace would be polluted?