闭包

当内层函数使用的参数是外层函数的局部变量时,编译器为这个变量创建一个闭包。

1、局部变量

function myFunction() {
    var a = 4;
    return a * a;
}

2、全局变量:在web页面中全局变量属于 window 对象,全局变量可应用于页面上的所有脚本。

var a = 4;
function myFunction() {
    return a * a;
}

3、修改局部变量不会影响全局变量,即使局部变量和全局变量名称相同。A:25,b:16

<body>

<p>函数可以访问定义在函数外的变量:</p>
<button type="button" onclick="myFunction()">A</button>
<button type="button" onclick="myFunction1()">B</button>
<p id="demo"></p>
<script>
var a = 4;
function myFunction() {
    var a=5;
    document.getElementById("demo").innerHTML = a * a;
} 
function myFunction1() {
    document.getElementById("demo").innerHTML = a * a;
} 
</script>

4、私有变量

var counter = 0;
 
function add() {
   return counter += 1;
}
 
add();
add();
add();

counter计数,虽然可以计数,但是其他函数也可以修改counter。

可以用内嵌函数

        function add() {
            var counter = 0;
            this.plus = function () { return ++counter; }
            return this.plus;
        }
        var fun = new add();
        console.log(fun());
        console.log(fun());
        function add() {
            var name = 0;
            this.plus = function () { name = name + 1; }
            this.get = function () { return name; }
        }
        var a = new add();
        a.plus(); // 1
        a.plus(); // 2
        console.log(a.get());

 

posted @ 2018-10-26 10:44  江境纣州  阅读(14)  评论(0编辑  收藏  举报