2017-10-21 29 views
-2

Je ne suis pas tout à fait sûr pourquoiVous cherchez des précisions sur le comportement de la valeur de retour

function slasher(arr, howMany) { 
var A = arr.splice(0, howMany); 

} 

slasher([1, 2, 3], 2); 

retours [1,2]

tout ...

function slasher(arr, howMany) { 
arr.splice(0, howMany); 

} 

slasher([1, 2, 3], 2); 

retours [3]

Je sais que le premier exemple est plus propre mais j'aimerais pouvoir identifier pourquoi ce dernier ne fonctionne pas. toute entrée est appréciée :-)

Répondre

4

Aucun de vos exemples ne renvoie une valeur, car aucune n'a d'instruction return.

Si vous ajoutez l'instruction return, les deux fonctions se comportent toujours de la même manière.

function slasher1(arr, howMany) { 
 
var A = arr.splice(0, howMany); 
 
} 
 

 
console.log(slasher1([1,2,3], 2)); 
 

 
function slasher2(arr, howMany) { 
 
arr.splice(0, howMany); 
 
} 
 

 
console.log(slasher2([1,2,3], 2)); 
 

 
function slasherWithReturn1(arr, howMany) { 
 
var A = arr.splice(0, howMany); 
 
return A; 
 
} 
 

 
console.log(slasherWithReturn1([1,2,3], 2)); 
 

 
function slasherWithReturn2(arr, howMany) { 
 
return arr.splice(0, howMany); 
 
} 
 

 
console.log(slasherWithReturn2([1,2,3], 2));

La seule différence serait si le premier exemple serait de retourner le résultat de Array.slice (les valeurs retirées) et le second que l'on peut retourner la matrice modifiée (la matrice sans que les valeurs retirées) .

function slasher1(arr, howMany) { 
 
    return arr.splice(0, howMany); 
 
} 
 

 
console.log(slasher1([1,2,3], 2)); 
 

 
function slasher2(arr, howMany) { 
 
arr.splice(0, howMany); 
 
return arr; 
 
} 
 

 
console.log(slasher2([1,2,3], 2));

1

Vous ne revenez pas vraiment quoi que ce soit que vous ne l'avez pas invoqué "retour". Si vous le faites, les deux lignes de code devraient vous donner les mêmes résultats. Soyez prudent, car les valeurs de retour se ressemblent mais ne sont pas exactement identiques.