📅  最后修改于: 2023-12-03 15:21:26.830000             🧑  作者: Mango
在面试中常常会问到 FizzBuzz 题目,这是一个基础的编码题,通过解决这个问题可以展示自己的编程基础知识和解决问题的能力。这个问题的要求是:从 1 至 100,如果一个数字可以被 3 整除,则输出 fizz,如果可以被 5 整除,则输出 buzz,如果可以同时被 3 和 5 整除,则输出 fizzbuzz。
那么如何在一行 JavaScript 中实现 FizzBuzz 的输出呢?
for(let i=1;i<=100;)console.log((i%3?'':'fizz')+(i%5?'':'buzz')||i,++i);
这是一个精简的代码,使用了三目运算符,在控制台输出了 fizz,buzz 和 fizzbuzz。下面我们来解析一下这行神秘代码的实现。
首先是 for
循环,i
初始值为 1,没进行一次循环,就将 i
值加 1,直到 i
大于等于 100。这个循环用的是逗号运算符,每一次运算逗号前面的部分为循环的初始化语句,逗号后面部分为空语句,相当于啥也不做。
接着是 console.log()
,作用是将结果输出到控制台上。
其余的是一个三目运算符 (?:)
,它的语法是 condition ? value1 : value2
。
我们可以先看第一个三目运算符 (i%3?'':'fizz')
,如果 i%3
的结果不为 0,则返回一个空串,否则返回 'fizz
'。i%3
的作用是判断 i
是否能被 3 整除。
接着是 (i%5?'':'buzz')
,如果 i
能被 5 整除,则返回 'buzz
',否则返回一个空串。
这样就完成了条件的判断,如果两者都满足,则输出 'fizzbuzz
',否则直接输出当前数值 i
。最后 ++i
操作把 i
值加 1。
因为要用到三目运算符,所以这个代码看起来会很长,但在一行内就一目了然了。