2017-07-17 84 views
0

我正在做Udacity JavaScript研究,现在有一个测验困扰我。我知道如何用红宝石很容易地做到这一点,但这一个正在杀死我。Javascript循环返回字符串x次

我需要调用函数并返回“ha”num次并添加“!”在循环的最后。

我试过这个,但它没有帮助。应该很简单。

function laugh(num) { 
    for (var x = 0; num; x ++) { 
     return 'ha'; 
    } 
} 

console.log(laugh(3)); 
+1

函数返回一次。 – davidxxx

+3

我怀疑这个问题的措辞是这样的,你可能不想回3次哈,你可能想返回一个有3公顷的字符串。像“哈哈哈!”。应该有一个回报。 –

+0

'return'立即返回。 IOW,通过循环的第一次传递返回,并且下一次传球永远不会发生。显然,这不是你想要的。 –

回答

1

您只能从return一次功能。尝试在循环中构建所需的字符串,然后在循环完成后返回值。

(注意:您可以在一个功能多return语句,但只要你打他们的一个函数执行完毕)

3

其实你甚至不需要循环。

const laugh = num => 'ha'.repeat(num) + '!'; 
 

 
console.log(laugh(3)); 
 
console.log(laugh(5));

+0

是的,我现在用.repeat(num)没有循环,但Udacity给你一个使用循环的小费。 –

+0

@ОлегЯкунин这只是一个提示,而不是必需的条件。 –

0

function laugh(num) { 
 
    var outString = ''; 
 
    for (var x = 0; x<num; x ++) { 
 
    outString += ' ha'; 
 
    } 
 
    return outString.substring(1) + '!'; 
 
} 
 

 
console.log(laugh(3));

0

在循环返回将返回整体功能。为了使这个工作,你可以连接循环中的字符串,然后返回连接的输出。您也错误地格式化了循环,当x小于num时,需要告诉循环停止。尝试:

function laugh(num) { 
 
    var laughString = ''; 
 
    for (var x = 0; x < num; x++) { 
 
    laughString += 'ha'; 
 
    } 
 
    return laughString + '!'; 
 
} 
 

 
console.log(laugh(3));

0
function laugh(input) { 
    var answer = ''; 
    for (var i = 0; i < input; i++) { 
    answer += 'ha'; 
    } 
    return (answer + '!'); 
} 

首先,一个变量设置为空字符串,(这将是您的答案) 然后,写一个for循环回路根据输入(你做到了这一点) 然后在for循环里面加'ha'到你的回答字符串 终于在for循环之外(它跑完所有循环后) 返回答案字符串加!