当检查第三个参数说明时,Nan返回

时间:2018-02-21 16:13:47

标签: javascript arrays function

如果我调用console.log(范围(1,10)),我会得到一个NaN数组。当进入第一个if语句时,参数third是未定义的,该语句的计算结果为True。当for循环运行时,count被添加到返回NaN的第三个。

为什么循环不会停止?相反,它循环并将NaN添加到数组中。

如果我设置if(第三个类型!==' undefined')第三个被转换为字符串,但javascript如何知道在for循环中运行时将第三个返回到数字?

function range(start,end,third){
  var numberlist = [];
 if(third !== 'undefined'){ 
    if (start < end){
      for (var count = start; count < end; count++){
    numberlist.push(count + third);
    }
  } 
    else {
            for (var count = start; count > end; count--){
    numberlist.push(count + third);
     }
    }
 }
 else {

  for (var count = start; count < (end + 1); count++){
    numberlist.push(count);
    }
 }

  return numberlist;
}

3 个答案:

答案 0 :(得分:1)

undefined是原始的,条件必须是third !== undefined

答案 1 :(得分:1)

实际上,您缺少typeof运算符:

 if(typeof third !== 'undefined'){ 

或者,您可以查看undefined

 if(third !== undefined){ 

以下代码将检查third是否为字符串undefined

 if(third !== 'undefined'){ 

答案 2 :(得分:0)

从此条件if (third !== 'undefined'中删除单引号:

function range(start, end, third) {
  var numberlist = [];
  if (third !== undefined) {
    if (start < end) {
      for (var count = start; count < end; count++) {
        numberlist.push(count + third);
      }
    } else {
      for (var count = start; count > end; count--) {
        numberlist.push(count + third);
      }
    }
  } else {
    for (var count = start; count < (end + 1); count++) {
      numberlist.push(count);
    }
  }

  return numberlist;
}

console.log(range(1, 10))