2017-10-21 54 views
-2

我不完全知道爲什麼尋找澄清返回值行爲

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

} 

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

返回[1,2]

而...

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

} 

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

返回[3]

我知道第一個例子更清潔,但我希望能夠確定爲什麼後者不起作用。任何輸入都是合適的:-)

回答

4

您的示例都沒有返回值,因爲它們都沒有return語句。

如果添加return語句,那麼這兩個函數的表現仍然相同。

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));

唯一的區別是,如果第一個例子將返回的Array.slice(被去除的值),第二個將返回修改後的數組的結果(所述陣列不去除的值) 。

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

你,你有沒有援引實際上並不返回任何東西 「的回報。」如果你這樣做,這兩行代碼應該給你相同的結果。請注意,因爲返回值看起來相同,但本質上並不完全相同。