我一直在无限循环,并且不明白为什么我的代码无法运行并且不断崩溃浏览器。
<!DOCTYPE html>
<html>
<body>
<script>
function firstLetter(word, letter) {
var firstLetter = "";
while(word.indexOf(" ", letter) !== -1) {
letter = word.indexOf(" ") + 1;
console.log(word.charAt(letter));
}
return firstLetter;
}
console.log(firstLetter('Hi!, my name is Jessica.'));
</script>
</body>
</html>
答案 0 :(得分:1)
没有办法摆脱while
循环。它会一直持续地找到字符串中的第一个空格,因为letter = word.indexOf(" ")
只能找到第一个空格。您应该记住在循环(indexOf
)中调用while ((letter = word.indexOf(" ", letter)) !== -1)
而不是使用第二个调用所获得的值,因此它会从您停止的位置开始,然后通过字符串进行操作。如果没有提供letter
,您也应该默认letter = letter || 0;
;此功能的开头为letter
;如果0
有任何<{1}},则split
设置为firstLetter
em> falsy * value)。
或者,您可以使用false
然后获取每个条目的第一个字母。
请注意,我没有提供明确的代码,因为我认为这是一项学习练习。
另外,您可能希望在循环中添加true
。
*&#34; falsy&#34; - JavaScript有&#34; falsy&#34;值(当用作布尔值时强制为undefined
的值)和&#34; truthy&#34;值(用作布尔值时强制为""
的值)。虚假值为0
,NaN
,null
,false
,undefined
,当然还有cum_f <- function(x, x0, k){
i <- 1
p <- function(x,x0) x0^2
while(i <= k){
p = function(x,x0){ p(x,x0) + (x - x0)**i }
i = i + 1
}
return(p(x,x0))
}
cum_f(x,1,5)
cum_f(10,1,5)
。所有其他人都是真实的。如果在调用函数时没有为参数提供参数,则参数将获得值{{1}}。