使用if / else语句的函数

时间:2015-04-15 10:36:03

标签: javascript string function if-statement

我创建了一个能够打印1-24之间所有数字的函数。如果数字可以分为3,它将打印Fizz,如果可以分为5,它将打印Buzz。

如果开始>停止,我想添加一条错误消息。我怎样才能做到这一点?我试着提醒,但根本没有用。

2)当我用start = 2和stop = 24打印函数时,显示的第一个值是" undefined"。这是为什么?

通过使用.substr(1)我想删除左边的第一个逗号。

function fizzBuzz(start, stop) {
  if (start >= stop)
 var returnString;
 for(var i= start; i <= stop; i++) {
    returnString += ",";
    if (i % 3 === 0 && i % 5 === 0)
      returnString += "FizzBuzz";
    else if (i % 3 === 0)
        returnString += "Fizz";
   else if (i % 5 === 0)
        returnString += "Buzz";
    else
        returnString += i;
}
 return returnString;
}
var result = fizzBuzz(2, 24).substr(1);

提前致谢!

7 个答案:

答案 0 :(得分:2)

您需要在if子句

中进行验证
if (start >= stop)
{
   return "start must be less than stop";
}

您需要先用空字符串初始化returnString

var returnString = "";

答案 1 :(得分:2)

您想要start >= stop显示错误消息,可以使用alert来完成。由于returnString变量未在任何地方声明,因此您第一次未定义。

所以尝试这样的事情。它会解决你的问题

function fizzBuzz(start, stop) {
    var returnString = '';
    if (start >= stop) {
        alert('stop must be greater than start');
        return;
    }
    for (var i = start; i <= stop; i++) {
        returnString += ",";
        if (i % 3 === 0 && i % 5 === 0) 
            returnString += "FizzBuzz";
        else if (i % 3 === 0) 
            returnString += "Fizz";
        else if (i % 5 === 0) 
            returnString += "Buzz";
        else returnString += i;
    }
    return returnString;
}

JS Fiddle Demo

答案 2 :(得分:2)

你可以这样做。

function fizzBuzz(start, stop) {
  if (start >= stop){
     throw "start must be less than stop";
  }
 var returnString = "";
  ...
  ...
  ...
 return returnString;
}
var result = fizzBuzz(2, 24).substr(1);

答案 3 :(得分:1)

对于错误mressage使用throw

function fizzBuzz(start, stop) {
  if (start >= stop){
     throw "start must be less than stop";
  }
  ....

如果要向用户显示信息,则需要捕获错误

try{
    var result = fizzBuzz(72, 24).substr(1);
    alert(result);
}catch(e){
    alert(e); // alerts "start must be less than stop"
}

第二个问题是因为resultStringundefined开始生命,当你将字符串连接到undefined时,你得到字符串“UndefinedYOURSTRINGHERE”。将returnString定义为空字符串。

 var returnString = "";

答案 4 :(得分:1)

显示的第一个值是未定义的,因为这是您声明它的方式:

if (start >= stop)
 var returnString;

请注意,您没有开括号,因此您基本上只是声明该变量。即使您没有声明它,但在以后执行时仍将是未定义的:

returnString += ",";

因为它总是以undefined开始。

您可以将该行移至最后,也可以在第一次if检查时添加提醒,并在start > stop时返回:

function fizzBuzz(start, stop) {
    if (start >= stop) {
        alert('This is wrong');
        return;
    }


  returnString = "";
  for(var i= start; i <= stop; i++) {
    if (i % 3 === 0 && i % 5 === 0)
      returnString += "FizzBuzz";
    else if (i % 3 === 0)
        returnString += "Fizz";
   else if (i % 5 === 0)
        returnString += "Buzz";
    else
        returnString += i;

    returnString += ",";
}

 return returnString;
}
var res = fizzBuzz(2, 24);
var result = res.substring(0, res.length - 1);;
console.log(result);

Fiddle

答案 5 :(得分:0)

您可以使用throw语句来处理错误:

if (start >= stop){
    throw "first integer must be less than 2nd integer"
}

您还必须使用初始值声明returnString:

 var returnString = "";

答案 6 :(得分:-1)

问题出在这里,

if (start >= stop) 
var returnString;

此处不需要if语句,但如果您需要,仍然可以这样做,

  function fizzBuzz(start, stop) { if (start >= stop){
     var returnString;
 for(var i= start; i <= stop; i++) { returnString += ","; 
if (i % 3 === 0 && i % 5 === 0) returnString += "FizzBuzz"; 
else if (i % 3 === 0) returnString += "Fizz"; else if (i % 5 === 0) returnString += "Buzz";
 else returnString += i; }
 return returnString;
 }
    }
     var result = fizzBuzz(2, 24).substr(1);
相关问题