2017-08-24 16 views
1

なぜこの関数は、配列の長さに応じてnewArr = [1,2,3、など]の代わりに空の配列を返すのか分かりません。 numが新しい配列の長さ、および値の範囲の最後の番号であると考えられるこの関数が空の配列を返すのはなぜですか?

function randomFunction(num) { 
     var newArr = []; 


     for(var i = 1; i < num.length; i++) { 
      newArr.push(i); 
    } 

     return newArr; 
}; 
+2

どのようにこの関数を呼び出していますか? –

+0

randomFunction(8); たとえば、 – klarate

+2

には長さメソッドがありません。引数がnumberの場合は、num.lengthの代わりに 'i marmeladze

答えて

4

場合は、代わりに使用されることを意図されている(lengthを使用するのではなく、それを直接使用する必要があります配列):

function randomFunction(num) { 
 
    var newArr = []; 
 

 
    for(var i = 1; i <= num; i++) { 
 
     newArr.push(i); 
 
    } 
 

 
    return newArr; 
 
}; 
 

 
var array = randomFunction(5); 
 
console.log(array);

また、あなたはあなたが1で値を開始したい場合には、代わりに<<=を使用したい場合がありますnを通過し、n - 1を通過しません。楽しみのために

2
function randomFunction(num) { 
     var newArr = []; 


     for(var i = 1; i < num /* number has no length */; i++) { 
      newArr.push(i); 
    } 

     return newArr; 
}; 

ES6の代替:

return new Array(num).fill().map((r, i) => i) 
1

randomFunction(8);例えば

数字の長さはまったくありません。それはすでに価値です。

length属性はまったく必要ありません。ただ

for(var i = 1; i < num; i++) { 
     newArr.push(i); 
    } 

function randomFunction(num) { 
 
    var newArr = []; 
 

 
    for (var i = 1; i < num; i++) { 
 
     newArr.push(i); 
 
    } 
 

 
    return newArr; 
 
}; 
 
console.log(randomFunction(8))

1

numはすでに数です。あなたは使用する必要はありません.lenghtプロパティ

function randomFunction(num) { 
     var newArr = []; 


     for(var i = 1; i <= num; i++) { 
      newArr.push(i); 
    } 

     return newArr; 
}; 
randomFunction(5); // [ 1, 2, 3, 4, 5 ] 
関連する問題