#24 +1s 程序


  • 1
    administrators

    完成一个生成计数器的函数 plusFor,调用它会返回一个计数器。计数器本身也是一个函数,每次调用会返回一个字符串。

    达到以下的效果:

    const counter1 = plusFor('小明')
    counter1() // => 为小明+1s
    counter1() // => 为小明+2s
    counter1() // => 为小明+3s
    ...
    
    const counter2 = plusFor('李梅')
    counter2() // => 为李梅+1s
    counter2() // => 为李梅+2s
    counter2() // => 为李梅+3s
    ...
    
    

    注意你只需要完成 plusFor 函数,不要使用额外的全局变量。


  • 12

    你搞的这个题目呀,excited!

    当时我就念了两首诗,叫苟利国家生死以,岂因祸福避趋之

    欢迎各位给我 + 1s !


  • 0
    管理员

    我的思路是在函数里定义一个count,然后使用闭包给他++。
    分享一下代码~

    //苟利国家生死以,岂因祸福避趋之(致敬楼上)
    const plusFor = (name) => {
      let count = 0;
      return () => {
        count++;
        return `为${name}+${count}s`;
      }
    }
    

  • 0

    此回复已被删除!

  • 0

    const plusFor = (name) => {
        let i = 1
        return () => {
          return `为${name}+${i++}s`
        }
     }
    

  • 2

    const plusFor = (name, count = 0) => () => 为${name}+${++count}s


  • 0

    var plusFor = function (str){
    var a = 0
    return function(){
    a = a+1
    console.log("为"+str+"+"+a+"s")
    }
    }


  • 0

    const plusFor = (name) => {
    let number = 1;
    let count = () => {
    return 为${name}+${number++}s;
    };
    return count;
    };


  • 0

    const plusFor = (name) => {
      let count = 0;
      return () => {
        count ++;
        return `为${name}+${count}s`;
      }
    }
    

  • 0

    const plusFor = /* TODO */
    (name, count=0) => () => 为${name}+${++count}s;


  • 0

    @江泽民 昵称碉堡了


  • 0

    function plusFor (name) {
    function* idMaker(){
    let index = 1;
    while(true)
    yield index++;
    }

      let gen = idMaker();
      let countFun = function () {
       let i = gen.next().value;
    	return '为' + name + `+${i}s`;
    }
    return countFun;
    }

  • 0

    const plusFor = (name,count=0)=>{return ()=>`为${name}+${++count}s`}

  • 0

    const plusFor = (name) => {
    let i = 0
    return() => {
    ++i
    console.log("为"+name+"+"+i+"s")
    }
    }


  • 0

    const plusFor = (name)=>{
    let num = 1 ;
    let counter = ()=>{
    console.log('为'+name+'+'+(num++)+'s') ;
    }
    return counter ;
    }

    求问为什么说结果不正确?? 我测试了例子输出是正常的。const counter1 = plusFor('小明')
    counter1() // => 为小明+1s
    counter1() // => 为小明+2s
    counter1() // => 为小明+3s
    ...

    const counter2 = plusFor('李梅')
    counter2() // => 为李梅+1s
    counter2() // => 为李梅+2s
    counter2() // => 为李梅+3s


  • 0

    @valk 好吧我知道错哪了,原来是要返回,不是要console.log输出啊。。。


  • 0

    const plusFor = (name) => {
    this.counter = 0 ;
    return function(){
    return '为' + name + '+' + ++this.counter +'s';
    };
    }

    这段代码 在浏览器上 是好使的 , 为什么 一直提示错误呢 ?谁来帮忙找找茬 ~


  • 0

    @hazyzh

    看了一圈,还是你的最简洁,有点瑕疵,返回的字符串应该加``号包裹,否则会报错


登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待