JS-函数闭包-计数器

计数器

全局变量实现

全局变量实现,虽然能实现计数器效果,但是容易被页面中的其他脚本或函数改变,从而影响计数器。

var count = 0;
function getCount() {
     count++;
     alert(count);
 }
getCount();
getCount();
getCount();

局部变量实现

局部变量虽然不会被修改,但是无法实现计数器效果,每次调用函数时,变量count都会被重新赋值,所以显示都是1。

function getCount1() {
    var count = 0;
    count++;
    alert(count);
}
getCount1();
getCount1();
getCount1();

利用闭包实现

闭包是指函数可以使用函数外定义的变量。
1-调用全局变量,是最简单的闭包
2-闭包可以使变量存放在内存中,不随函数执行完毕而消亡
3-闭包可以从函数外部访问函数内部变量

如何在外部读取局部变量?
1-在函数内部,再定义一个函数
2-把内部函数作为返回值

外部函数的所有局部变量,对内部函数都是可见的。
JS特有的“链式作用域”结构,使得父对象的所有变量对子对象都是可见的。

function getCount2() {
    var count = 0;
    function addCount() {
        count++;
        alert(count);
    }
    return addCount;
}
var result = getCount2();
result();
result();
result();

你可能感兴趣的:(JavaScript,javascript,js,编程语言)