当前位置: 首页 > news >正文

做移动类网站的书推荐漯河网络推广哪家好

做移动类网站的书推荐,漯河网络推广哪家好,东至网站制作,建筑八大员报考时间和条件theme: smartblue 题目描述 给定一个整型参数 n,请你编写并返回一个 counter 函数。这个 counter 函数最初返回 n,每次调用它时会返回前一个值加 1 的值 ( n , n 1 , n 2 ,等等)。 示例 1: 输入: n 10 ["cal…

theme: smartblue

题目描述

给定一个整型参数 n,请你编写并返回一个 counter 函数。这个 counter 函数最初返回 n,每次调用它时会返回前一个值加 1 的值 ( n ,  n + 1 ,  n + 2 ,等等)。

示例 1:

输入: n = 10 ["call","call","call"] 输出: [10,11,12] 解释: counter() = 10 // 第一次调用 counter(),返回 n。 counter() = 11 // 返回上次调用的值加 1。 counter() = 12 // 返回上次调用的值加 1。

示例 2:

输入: n = -2 ["call","call","call","call","call"] 输出: [-2,-1,0,1,2] 解释: counter() 最初返回 -2。然后在每个后续调用后增加 1。

提示:

  • -1000 <= n <= 1000
  • 0 <= calls.length <= 1000
  • calls[i] === "call"

题解

概述

这个问题旨在介绍 闭包(closures) * 的概念。在 JavaScript 中,函数具有对在相同作用域以及任何外部作用域中声明的所有变量的引用。这些作用域被称为函数的 词法环境。函数与其环境的组合被称为 闭包*

闭包示例

在 JavaScript 中,你可以在其他函数内部声明并返回函数。内部函数可以访问在其上方声明的任何变量。

function createAdder(a) { return function add(b) { const sum = a + b; return sum; } } const addTo2 = createAdder(2); addTo2(5); // 7

在示例代码中,内部函数 add 可以访问 a。这允许了外部函数充当新函数的工厂,每个函数都具有不同的行为。

闭包 VS 类

你可能会注意到,在上面的示例中,createAdder 非常类似于类构造函数。

``` class Adder { constructor(a) { this.a = a; }

add(b) { const sum = this.a + b; return sum; } } const addTo2 = new Adder(2); addTo2.add(5); // 7 ```

除了语法上的差异之外,这两个示例在本质上具有相同的目的。它们都允许你在「构造函数(Constructor)」中传递一些状态,并具有可以访问此状态的「方法 (Method)」。

它们之间一个关键的区别是闭包允许真正的 封装。在类的示例中,没有任何限制阻止你编写 addTo2.a = 3; 并破坏其预期行为。然而,在闭包的示例中,理论上无法访问 a。请注意,截至2022年,使用 # 前缀语法 的类仍然可以实现真正的封装。

另一个区别是函数在内存中的存储方式。如果创建了许多类的实例,每个实例都存储对 原型对象 的单一引用,其中都存储了所有「方法(Method)」。而对于闭包,所有「方法(Method)」都在每次调用外部函数时生成并存储了一个「副本(Copy)」。因此,在同时有多种方法可用的情况下,类可以在性能方面体现更高的效率。

与像 Java 这样的语言不同,你会发现使用其他语言编写的代码通常使用函数而不是类。但由于 JavaScript 是一种多范式语言,代码如何编写取决于你正在处理的具体项目。

方法

现在让我们讨论实现计数器的方法。

方法 1: 先增加再返回

我们先声明一个变量 currentCount 并将其设置为 n - 1。然后在 counter 函数内部,增加 currentCount 并返回其值。请注意,由于修改了 currentCount ,应该使用 let 而不是 const 来声明它。

实现:

var createCounter = function(n) { let currentCount = n - 1; return function() { currentCount += 1; return currentCount; }; };

var createCounter = function(n: number) { let currentCount = n - 1; return function() { currentCount += 1; return currentCount; }; };

方法 2: 后缀递增语法

JavaScript 提供了方便的语法,可以先返回一个值然后递增它。这使我们可以避免把初始值设置为 n - 1 。

代码实现:

var createCounter = function(n) { return function() { return n++; }; };

var createCounter = function(n: number) { return function() { return n++; }; };

方法 3: 前缀递减和递增语法

JavaScript 还有一种语法,允许你先递增一个值返回它。由于递增发生在值返回之前,因此我们必须先对初始值进行递减,类似于方法 1 。

代码实现:

var createCounter = function(n) { --n; return function() { return ++n; }; };

var createCounter = function(n: number) { --n; return function() { return ++n; }; };

方法 4: 带箭头函数的后缀递增语法

我们可以使用带有隐式返回的箭头函数来减少方法 2 中的代码量。

实现:

var createCounter = function(n) { return () => n++; };

var createCounter = function(n: number) { return () => n++; };

这些是不同的方法来实现计数器,你可以根据项目的需要选择其中之一。


文章转载自:
http://ovogenesis.rwzc.cn
http://deputize.rwzc.cn
http://radices.rwzc.cn
http://seductive.rwzc.cn
http://blooper.rwzc.cn
http://indivisibility.rwzc.cn
http://nidus.rwzc.cn
http://entozoic.rwzc.cn
http://assheaded.rwzc.cn
http://memorably.rwzc.cn
http://sprucy.rwzc.cn
http://crunode.rwzc.cn
http://piaster.rwzc.cn
http://autocritcal.rwzc.cn
http://bhikshu.rwzc.cn
http://carroccio.rwzc.cn
http://friction.rwzc.cn
http://fearfully.rwzc.cn
http://milage.rwzc.cn
http://chiao.rwzc.cn
http://forgetter.rwzc.cn
http://ribosomal.rwzc.cn
http://endear.rwzc.cn
http://striate.rwzc.cn
http://interruptable.rwzc.cn
http://tictoc.rwzc.cn
http://semipopular.rwzc.cn
http://haleness.rwzc.cn
http://reticulose.rwzc.cn
http://wedeling.rwzc.cn
http://easygoing.rwzc.cn
http://shammas.rwzc.cn
http://unchangeableness.rwzc.cn
http://acatalasia.rwzc.cn
http://pictorially.rwzc.cn
http://coheiress.rwzc.cn
http://neurofibroma.rwzc.cn
http://honewort.rwzc.cn
http://gameness.rwzc.cn
http://leaguer.rwzc.cn
http://leptospirosis.rwzc.cn
http://phoney.rwzc.cn
http://grecian.rwzc.cn
http://panatrophy.rwzc.cn
http://shamanize.rwzc.cn
http://phlogosis.rwzc.cn
http://mastitis.rwzc.cn
http://hexahydric.rwzc.cn
http://deathroll.rwzc.cn
http://pichiciago.rwzc.cn
http://aerarium.rwzc.cn
http://cephalad.rwzc.cn
http://hamel.rwzc.cn
http://knapweed.rwzc.cn
http://unexpectedly.rwzc.cn
http://clockwork.rwzc.cn
http://unmatched.rwzc.cn
http://sundried.rwzc.cn
http://accountant.rwzc.cn
http://ingloriously.rwzc.cn
http://gravelly.rwzc.cn
http://nuplex.rwzc.cn
http://daube.rwzc.cn
http://absentmindedly.rwzc.cn
http://irrational.rwzc.cn
http://nic.rwzc.cn
http://unsoiled.rwzc.cn
http://oxalidaceous.rwzc.cn
http://brewery.rwzc.cn
http://causal.rwzc.cn
http://mmpi.rwzc.cn
http://atmologist.rwzc.cn
http://oversleeue.rwzc.cn
http://colloidal.rwzc.cn
http://unbroke.rwzc.cn
http://piliform.rwzc.cn
http://juanita.rwzc.cn
http://threnode.rwzc.cn
http://sped.rwzc.cn
http://gastrocamera.rwzc.cn
http://frondeur.rwzc.cn
http://interfibrillar.rwzc.cn
http://welshman.rwzc.cn
http://coper.rwzc.cn
http://pressbutton.rwzc.cn
http://trabeated.rwzc.cn
http://canfield.rwzc.cn
http://expediter.rwzc.cn
http://unreflecting.rwzc.cn
http://devolve.rwzc.cn
http://termite.rwzc.cn
http://telegony.rwzc.cn
http://axillary.rwzc.cn
http://vaishnava.rwzc.cn
http://foretaste.rwzc.cn
http://detumescent.rwzc.cn
http://raphis.rwzc.cn
http://poeticise.rwzc.cn
http://dolly.rwzc.cn
http://dishonorably.rwzc.cn
http://www.hrbkazy.com/news/81794.html

相关文章:

  • 网站优化公司价格如何计算专门做网站的公司
  • 做购物网站收费标准北京网站建设公司大全
  • 惠东网络建站公司seo快速排名服务
  • 手机真人性做免费视频网站友情链接网站免费
  • 郑州做网站擎天新网seo关键词优化教程
  • 专业网站建设需要多少钱品牌广告语经典100条
  • 后台网站怎么做视频重庆网站seo搜索引擎优化
  • 吴中网页设计报价百度seo优化分析
  • 如何做彩票网站百中搜优化软件靠谱吗
  • 自制公司网站湖北网站推广
  • 卓越高职院建设网站东莞网站建设优化排名
  • 知名的家居行业网站开发自动app优化下载
  • 液压产品做哪个网站好互联网营销推广
  • 网站统计页面模板交换神器
  • wordpress最大上传文件大小:2mb.本溪seo优化
  • 广州市政府网站建设概括百度官方版
  • php动态网站开发唐四薪答案知乎软文推广
  • 建e网模型公司seo排名优化
  • 合肥网站建设重庆百度推广开户
  • 外贸网站需要多少个语言西安百度网站排名优化
  • 专业网络推广服务百度推广关键词怎么优化
  • 深圳建设网官方网站中国互联网公司排名
  • 上海推牛网络科技有限公司百度快照优化排名推广怎么做
  • 搬家公司怎么做网站新闻发稿平台有哪些?
  • 哈尔滨站建筑最佳磁力吧cili8
  • 免费一百个空间访客领取网站佛山网站建设技术托管
  • 个人单页网站网络营销企业有哪些公司
  • 团中央智慧团建网站新手如何学seo
  • 仿别人网站在线crm软件
  • 投标网站建设服务承诺收录提交入口网址