You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现调用add函数首次返回1第二次返回2且仅在函数内部编码?

问题原因

你原来的实现不符合要求,是因为你直接重写了整个add变量的赋值逻辑,突破了题目要求的「所有代码仅可编写在给定add函数的// start only和// end注释区间内」的限制,改动了题目给定的代码框架结构。

正确实现方案

我们可以利用函数本身也是对象,支持挂载自定义属性的特性来存储计数器,不需要额外在外层封装闭包,所有逻辑都可以写在指定的注释区间内:

var add = function () {
     // start only 
    // 首次调用时初始化计数器
    if (!add.counter) {
        add.counter = 0
    }
    // 自增后返回,刚好第一次返回1,第二次返回2
    return ++add.counter
     // end 
};
 
console.log(add()); // 1
console.log(add()); // 2
实现逻辑说明
  • 第一次调用add()时,add.counter为undefined,判定为假,初始化为0,自增后变成1返回
  • 第二次调用add()时,add.counter已经是1,自增后变成2返回
  • 所有代码都严格限定在指定的注释区间内,没有改动题目给定的代码框架结构,完全符合要求。

内容的提问来源于stack exchange,提问作者YaTing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:54:04