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