如何准确描述JavaScript闭包的原理和应用场景?
- 内容介绍
- 文章标签
- 相关推荐
本文共计965个文字,预计阅读时间需要4分钟。
javascriptfunction lazy_sum(arr) { var sum=function() { return arr.reduce(function(x, y) { return x + y; }); }; return sum;}
var f=lazy_sum([1, 2, 3]);
function lazy_sum(arr) { var sum = function () { return arr.reduce(function (x, y) { return x + y; }); } return sum; } //当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数 var f = lazy_sum([1, 2, 3, 4, 5]); // function sum() //调用函数f时,才真正计算求和的结果 f(); // 15 //当我们调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数: var f1 = lazy_sum([1, 2, 3, 4, 5]); var f2 = lazy_sum([1, 2, 3, 4, 5]); f1 === f2; // false //f1()和f2()的调用结果互不影响。
本文共计965个文字,预计阅读时间需要4分钟。
javascriptfunction lazy_sum(arr) { var sum=function() { return arr.reduce(function(x, y) { return x + y; }); }; return sum;}
var f=lazy_sum([1, 2, 3]);
function lazy_sum(arr) { var sum = function () { return arr.reduce(function (x, y) { return x + y; }); } return sum; } //当我们调用lazy_sum()时,返回的并不是求和结果,而是求和函数 var f = lazy_sum([1, 2, 3, 4, 5]); // function sum() //调用函数f时,才真正计算求和的结果 f(); // 15 //当我们调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数: var f1 = lazy_sum([1, 2, 3, 4, 5]); var f2 = lazy_sum([1, 2, 3, 4, 5]); f1 === f2; // false //f1()和f2()的调用结果互不影响。

