Objasnění nefunkčního forEach-u v JS

Kolemjdoucí

Objasnění nefunkčního forEach-u v JS
« kdy: 23. 11. 2015, 11:24:13 »
Ahoj, proč nepracuje 1 kód, když 2 pracuje a dělá to stejný ?

Kód: [Vybrat]
var array = [0, 1, 2];
array.forEach(myFnc[i, "b", "c"]);

Kód: [Vybrat]
var array = [0, 1, 2];
array.forEach(function(i){
 myFnc(i, "b", "c");
});


SB

Re:Objasnění nefunkčního forEach-u v JS
« Odpověď #1 kdy: 23. 11. 2015, 12:49:22 »
Tipnu (Javascript neznám):

Metoda forEach očekává uzávěru/funkci o 1 parametru, to v 1. případě není splněno.

tdvorak

Re:Objasnění nefunkčního forEach-u v JS
« Odpověď #2 kdy: 23. 11. 2015, 13:09:54 »
forEach očekává callback s parametry currentValue, index, array:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

Můžeš mu tak předat tvou funkci myFnc, pokud bude odpovídat tomu callbacku. Případně s tím můžeš čarovat pomocí bind metody:

Kód: [Vybrat]
var myFnc = function(a, b, val) {
  console.log('val:' + val);
  console.log('a:' + a);
  console.log('b:' + b);
}

var array = [0, 1, 2];
array.forEach(myFnc.bind(null, "a", "b"));


Re:Objasnění nefunkčního forEach-u v JS
« Odpověď #3 kdy: 23. 11. 2015, 15:03:14 »
V prvním příkladu máte myFnc a za tím hranaté závorky, takže jde o přístup k prvku pole nebo mapy. Jako klíč máte uvedeno i, "b", "c", což je několik výrazů oddělených čárkou, které se postupně vyhodnotí a použije se hodnota posledního. Ve vašem případě je to tedy ekvivalentní zápisu myFnc["c"] nebo myFnc.c. První kód je tedy ekvivalentní tomuto:

Kód: [Vybrat]
var array = [0, 1, 2];
array.forEach(myFnc.c);

Což asi bude něco jiného, než jste chtěl napsat…