问题
题目地址:流程控制
题目描述
实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
2、如果 num 能被 3 整除,返回字符串 fizz
3、如果 num 能被 5 整除,返回字符串 buzz
4、如果参数为空或者不是 Number 类型,返回 false
5、其余情况,返回参数 num
示例
输入:
15
输出:
fizzbuzz
实现
function fizzBuzz(num) {
if (typeof num != 'number') {
return false;
} else if(num % 3 === 0 && num % 5 === 0) {
return 'fizzbuzz';
} else if(num % 3 === 0) {
return 'fizz';
} else if(num % 5 === 0) {
return 'buzz';
} else {
return num;
}
}
//测试:
console.log(fizzBuzz(0)); // 'fizzbuzz' ,注意0可以被任何数整除,当然也包括3、5
分析
1.使用余除“%”,判断余数是否为0即可。但是需要注意下几个判单的顺序,判断number类型可以放在最前面,如果类型错误直接返回false,而不需要进行其它的判断了。
2.判断“如果参数为空或者不是 Number 类型”,这两种情况,其实都直接用下面的判别式即可
if (typeof num != 'number') {...}
因为如果传入参数为空,num的值会为undefined。它的类型是"undefined",同样不为“number”
typeof undefined != 'number'// true
有些答案为了判断参数为空,还多写了一些复杂的判断,感觉其实没必要。