私はTAですが、学生が、次のコードが配列の最初の2つの要素をスワップせず、代わりに未定義として生成された理由を尋ねてきました。学生が私に見せたコードは次のとおりです。
var swapFirstTwoElementsOf = function (a) {
a = [a[1],a[0]].concat(a.slice(2, a.length));
}
なぜこれは未定義を返すのですか?
私はTAですが、学生が、次のコードが配列の最初の2つの要素をスワップせず、代わりに未定義として生成された理由を尋ねてきました。学生が私に見せたコードは次のとおりです。
var swapFirstTwoElementsOf = function (a) {
a = [a[1],a[0]].concat(a.slice(2, a.length));
}
なぜこれは未定義を返すのですか?
変数を返す必要があります。ローカル参照は再割り当てされますが、元の変数aは再割り当てされません。あなたは次のようなことをする必要があります
var swapFirstTwoElementsOf = function (a) {
return [a[1],a[0]].concat(a.slice(2, a.length));
}
var myArray = [0, 1, 2, 3];
myArray = swapFirstTwoELementsOf(myArray);
以前は、関数は何も返さなかったため、undefinedと評価されていました。