好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

javascript function 闭包

JavaScript作为一门面向对象的编程语言,有一些独特的特性,如函数是一等公民,可以作为参数传递给其他函数,还可以在函数内部定义其他函数,最重要的是它支持闭包(closure)。闭包是JavaScript中最强大也是最常见的编程模式之一。

闭包的概念非常简单——闭包就是能够读取其他函数内部变量的函数。例如:

function outerFunction() {
var outerVariable = 'I am outside!';
function innerFunction() {
alert(outerVariable);
}
return innerFunction;
}
var innerFunc = outerFunction();
innerFunc();

该代码中,innerFunction是一个闭包。它可以访问它的父级函数outerFunction内部的变量outerVariable。当outerFunction返回innerFunction时,innerFunc保持了对outerFunction作用域的引用。当我们调用innerFunc()时,它仍然可以访问outerFunction作用域中的变量outerVariable,并将其值alert出来。

闭包的真正威力在于它能够避免使用全局变量。例如:

function counter() {
var count = 0;
return {
increment: function() {
count++;
console.log(count);
},
decrement: function() {
count--;
console.log(count)
}
}
}
var c = counter();
c.increment();  // 输出 1
c.increment();  // 输出 2
c.decrement();  // 输出 1

该代码中,counter函数返回一个带有increment和decrement方法的对象。这些方法能够访问count变量,但是在全局作用域中并没有定义count。这就是闭包的魔力,因为这些方法都有对count的引用。

当然,闭包的应用远不止这些,还有一些常见的用途,如异步编程、模块化设计等。JavaScript作为一门面向对象的编程语言,融合了函数式编程的思想,使用闭包可以帮助我们更好地理解和应用这些特性。

查看更多关于javascript function 闭包的详细内容...

  阅读:40次

上一篇: javascript gzip压缩

下一篇:javascript gethttp