JavaScript 嵌套函数

标签 javascript nested-function

我有一段我不明白的 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();
}

在此示例中,baz 函数将在 foo 函数运行后可用,因为它已被覆盖 window.baz。除了 foo 函数中包含的范围之外,bar 函数将无法用于任何上下文。

作为一个不同的例子:

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

Fizz 函数被设计为一个构造函数,因此在运行时,它将一个buzz 函数分配给新创建的对象。也就是说,您可以像这样使用它:

const obj = new Fizz();
obj.buzz();

或更简洁(如果您不需要在调用 buzz 后保留对象):

new Fizz().buzz();

关于JavaScript 嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7295634/

相关文章:

java - 在gwt中添加外部js

javascript - MongoError : multi update only works with $ operators while using bulk find and update in node. js

json - xml2js : put parser into a function

javascript - Angular TypeScript JavaScript 词典范围在第三方 API 事件处理程序的嵌套函数中丢失

python - 将参数从父函数传递给嵌套函数Python

python - 为什么这两种方法打印出不同的结果?

javascript - 通过 localStorage 在两个页面之间传递点击事件

javascript - React Array Prop 在渲染时发生变化

javascript - 当数据表的特定列隐藏时,如何禁用列切换?

javascript - 在 javascript 中嵌套函数和性能?