流程控制

题目描述

实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
2、如果 num 能被 3 整除,返回字符串 fizz
3、如果 num 能被 5 整除,返回字符串 buzz
4、如果参数为空或者不是 Number 类型,返回 false
5、其余情况,返回参数 num
示例1

输入

15

输出

fizzbuzz
我的答案::

function fizzBuzz(num) {
    if(num === null || 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';
    }
    
    return num;
}


参考的另外高手答案::

高程明确定义 Number类型下两种表示: var num = 120 or var num1 = new Number(120)

  • 高票第一回答下需要考虑一个问题new Number(120)也是Number类型。
  • 前者typeof num === 'number', 后者typeof num1 = 'object';
  • 最精确的判断方法向来是Object.prototype.toString.call(args) === '[object ' + type + ]';
  • 这里type可取[ 'Array', 'Number', 'Object', 'String', 'Undefined', 'null' ]


function fizzBuzz(num) {
    if (num === null || 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;
}
var num = new Number(120);
console.log(fizzBuzz(num), typeof num); // fizzBuzz, object
//测试判例
console.log([fizzBuzz(''), //false
    fizzBuzz(), //false
    fizzBuzz(0), //fizzBuzz
    fizzBuzz(15), //fizzBuzz
    fizzBuzz(9), //fizz
    fizzBuzz(25), //buzz
    fizzBuzz(29) //29
]);



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值