练习牛客网笔试题--前端js--30-流程控制
// 题目描述
// 实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
// 1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
// 2、如果 num 能被 3 整除,返回字符串 fizz
// 3、如果 num 能被 5 整除,返回字符串 buzz
// 4、如果参数为空或者不是 Number 类型,返回 false
// 5、其余情况,返回参数 num
// 输入 15
// 输出 fizzbuzz
1.自己的练习
function fizzBuzz(num) {
if(num === '' || (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;
}
}
2.题解
//1. isNaN的方法有一点问题,不能 字符串型数字。不过拼接字符串部分的思路值得学习
function fizzBuzz(num) {
if (num === null || num === '' || isNaN(num)) {
return false;
}
var str = '';
if (num % 3 === 0) {
str += 'fizz';
}
if (num % 5 === 0) {
str += 'buzz';
}
return str || num;
}
// 2. Object.prototype.toString.call() 较精确的判断方法
function fizzBuzz(num) {
if (num === undefined || Object.prototype.toString.call(num) !== '[object Number]') {
return false;
}
if (num % 3 === 0 && num % 5 === 0) {
return 'fizzbuzz';
} else if (num % 3 === 0) {
return 'fizz';
} else if (num % 5 === 0) {
return 'buzz';
}
return num;
}