美文网首页JavaScript
JavaScript闭包相关概念及笔试练习一二三

JavaScript闭包相关概念及笔试练习一二三

作者: Aniugel | 来源:发表于2018-12-03 15:43 被阅读15次
一、闭包的定义

闭包是指可以访问上一层作用域里变量的函数,即便上一层函数已关闭,闭包是内部函数和外部函数连接了起来

二、闭包的作用

使得函数拥有私有变量变成可能(要用私有变量的时候可以用到闭包);

三、代码解析

要实现每次点击按钮就累加,正常情况下只能调用外部的初始变量,函数累加(①号代码显示),如果初始变量(全局变量)变成局部变量,函数每次累加都是从初始化值开始计算,每次的结果都一样(②号代码显示),要解决这种情况,可以用③号代码(即闭包的使用,使私有变量变为可能)
①号代码显示

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<p>全局变量计数。</p>
<button type="button" onclick="myFunction()">计数!</button>
<p id="demo">0</p>
<script>
var counter = 0;
function add() {
    return counter += 1;
}
function myFunction(){
    document.getElementById("demo").innerHTML = add();
}
</script>
</body>
</html>

②号代码显示

<script>
function add() {
    var counter = 0;
    return counter += 1;
}
function myFunction(){
    document.getElementById("demo").innerHTML = add();
}
</script>

③号代码显示

<script>
var add = function () {
    var counter = 0;
    return function () {return counter += 1;}
};
function myFunction(){
    document.getElementById("demo").innerHTML = add();
}
</script>

相关文章

网友评论

    本文标题:JavaScript闭包相关概念及笔试练习一二三

    本文链接:https://www.haomeiwen.com/subject/smuycqtx.html