我不完全确定为什么
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]
我知道第一个例子更干净但我希望能够找出后者不起作用的原因。任何输入都是apreciated: - )
答案 0 :(得分: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 :(得分:1)
你没有实际返回任何内容,因为你没有调用“return”。如果这样做,两行代码应该给你相同的结果。请注意,因为返回值看起来相同,但性质上并不完全相同。