【发布时间】:2014-06-19 16:58:09
【问题描述】:
通过一些 JS 示例,我为一个 fizzbuzz 问题编写了这个解决方案。它只打印 1..20 和 str 永远不会得到 concat() 值。 有人能解释一下为什么这不起作用吗?
for(i=1; i<=20; i++){
var str = ''
if(i%3===0){
str.concat('Fizz')
}
if(i%5===0){
str.concat('Buzz')
}
if(str===''){
console.log(i)
} else {
console.log(str)
}
}
更新:由于上述问题是一个简单的语法错误(不想启动新线程),想知道以下是否是在JS中简洁地编写上述答案的好方法?
for(i=1; i<=20; i++){
var str = ''
i%3===0 ? str = str.concat('Fizz') : false
i%5===0 ? str = str.concat('Buzz') : false
str==='' ? console.log(i) : console.log(str)
}
【问题讨论】:
-
字符串在 Javascript 中是不可变的。您总是必须分配字符串操作的结果。
-
我刚刚意识到问题/解决方案,你们已经回复了答案。谢谢。在 JS 中,我需要摆脱 Ruby 的思维模式。
-
JS 中唯一可变的类型是对象和数组。
-
@cdlane 你删除了一个线程只是为了添加一个标签?
-
@MichaelL。是的,有太多新的 fizzbuzz 问题可以很容易地被现有问题回答(在这种情况下,未标记的比标记的要多。)但是会暂停并考虑您的评论。
标签: javascript fizzbuzz