代码之家  ›  专栏  ›  技术社区  ›  MeowHowe

串联输出-初学者函数

  •  1
  • MeowHowe  · 技术社区  · 7 年前

    这是一个非常基本的函数,因为我刚刚开始用JavaScript编程。

    function laugh(num) {
        for(var i = 1; i < num ; i += 1) {
            var message = "ha";
            console.log(message);
    }
            return message + "!";
    }
    
    console.log(laugh(3));
    

    我得到的结果是:

    ha
    ha
    ha!
    

    但我需要它

    hahaha!
    

    我试过很多不同的字符串,比如尝试使用和空字符串。但似乎什么都不管用。

    6 回复  |  直到 7 年前
        1
  •  1
  •   Tommaso Belluzzo    7 年前

    消息字符串必须在循环之前定义,否则您不会连接字符串,但只会覆盖它们:

    function laugh(num)
    {
        var message = '';
    
        for (var i = 0; i < num ; i += 1)
            message += "ha";
    
        return message + "!";
    }
    

    使用调试 console.log()

    我还修改了循环,因为声明 i 1 message '' 一开始会比预想的少笑一声!因此,要么你选择:

    var message = 'ha';
    for (var i = 1; i < num ; i += 1)
    

    或者你选择:

    var message = '';
    for (var i = 0; i < num ; i += 1)
    

    但是,如果有人应用公共逻辑来参数化函数,第一种方法会产生误导性的结果。

        2
  •  1
  •   davidxxx    7 年前

    console.log() 在末尾追加新行。
    声明 message for 并将每个零件存储到。
    然后在循环结束后,用 安慰日志() :

    function laugh(num) {
        var message = "";
        for(var i = 1; i < num ; i += 1) {
            message += "ha";
        }
        console.log(message);
        return message + "!";
    }
    
    console.log(laugh(3));
    
        3
  •  1
  •   marmeladze    7 年前

    将初始消息移出循环。

    function laugh(num) {
        var message = "";
        for(var i = 1; i < num ; i += 1) {
            message += "ha";
        }
            return message + "!";
    }
    
    console.log(laugh(5));

    下面的循环只是分配 num 时间ha到消息变量。在循环结束时,它会变成“ha”+“!”=&燃气轮机;“哈!”。包装这个循环的函数并没有像您所期望的那样完成。这个 console.log 只是假装你-)

    for(var i = 1; i < num ; i += 1) {
            var message = "ha";
    }
    
        4
  •  1
  •   kind user Faly    7 年前

    如果你愿意 for 对此任务的循环方法,您应该 声明 message 变量作为 空字符串 外部 对于 循环,然后,每个循环串联 ha 消息 变量

    function laugh(num) {
      var message = '';
      for (var i = 0; i < num; i += 1) {
        message += "ha";
      }
      return message + "!";
    }
    
    console.log(laugh(3));

    然而,如果你想要一个更简单和现代的解决方案,你应该考虑 repeat 功能:

    const smile = (num) => 'ha'.repeat(num) + '!';
    
    console.log(smile(3));
        5
  •  1
  •   cнŝdk    7 年前

    你得到这个输出是因为 console.log() 呼叫将打印在新行中,您需要申报您的 message 循环外的变量。

    您需要在记录之前形成整个消息。

    function laugh(num) {
      var message = 'ha';
      for (var i = 1; i < num; i += 1) {
        message += "ha";
      }
      return message + "!";
    }
    

    演示:

    function laugh(num) {
      var message = '';
      for (var i = 1; i < num; i += 1) {
        message += "ha";
      }
      return message + "!";
    }
    
    console.log(laugh(5));
        6
  •  0
  •   bikeonastick    7 年前
    function laugh(num){
      var message = '' ; 
      for(var i=0;i<num;i++) {
        message= message + "ha";
      } 
      return message + "!";
    }
    
    console.log(laugh(3));
    

    您不需要控制台。如果要在函数外部记录,请在函数内部记录。此外,在for循环外设置一个变量,并使用它累积消息输出。