我有一段我不明白的 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/