javascript 多重闭包函数

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

<script>

function f1() {
var i = 0;
return function () {
console.log(i++);
var j = 1;
return function () {
console.log(j++)
}
}
}
f1(); // 调用后 返回了一个内部闭包函数

console.log(f1()); //输出 内部闭包函数

var f2 = f1(); // 将内部闭包函数 赋值给 f2
f2(); // 调用内部函数 第一次 输出 0
f2(); // 调用内部函数 第二次 输出 1 (因为闭包函数 具有私有变量的特性 变量会 一直保存

f1()(); // 此 写法 等同 与上面 f2() 输出为 0
console.log(f1()()); // 输出 0 和 内部闭包函数内的函数

f1()()(); // 输出 0 1
var ff = f1()(); // 将最里层 函数 赋值给ff 同时输出 0
ff(); // 调用 最里层函数 第一次 输出 1
ff(); // 调用 最里层函数 第二次 输出 2

</script>
</body>
</html>
posted @ 2019-04-24 21:34  码小龙  阅读(372)  评论(0编辑  收藏  举报