読者です 読者をやめる 読者になる 読者になる

みかづきブログ その3

3ヶ月つづけてみました。

いまさらながらArray.prototype.mapの引数を調べる

JavaScript
var arr = [0, 1, 2].map(function(num) {
    return num * 2;
});

console.log(arr); // => [0, 2, 4]

的な感じで、配列の要素にループでアクセスして、
結果を新たな配列として返すmap関数の引数について調べました。いまさらですが。


mapに渡す引数

第一引数は コールバック関数 、第二引数はオプションで コールバック関数内でのthisの値 を渡すことができます。

第二引数を省略すると、

["a", "b", "c"].map(function() {
    console.log(this);
});
window

window

window

とコールバックを普通に実行した際と同じthisになります。

第二引数を渡すと、

["a", "b", "c"].map(function() {
    console.log(this);
}, document);
document

document

document

第二引数がthisになります。
callやapplyの第一引数と同じ使い方です。


コールバックに渡される引数

["a", "b", "c"].map(function() {
    console.log(arguments);
});

こんな感じでコールバックを渡したとき、

["a", 0, ["a", "b", "c"]]

["b", 1, ["a", "b", "c"]]

["c", 2, ["a", "b", "c"]]

と出力されます。

すなわち、コールバック関数には、

対象となる要素index配列全体

の順に渡されます。

developer.mozilla.org