寻找澄清返回值行为
问题描述:
我不完全知道为什么寻找澄清返回值行为
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]
我知道第一个例子更清洁,但我希望能够确定为什么后者不起作用。任何输入都是合适的:-)
答
您的示例都没有返回值,因为它们都没有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));
答
你,你有没有援引实际上并不返回任何东西 “的回报。”如果你这样做,这两行代码应该给你相同的结果。请注意,因为返回值看起来相同,但本质上并不完全相同。