Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Kolemjdoucí 23. 11. 2015, 11:24:13

Název: Objasnění nefunkčního forEach-u v JS
Přispěvatel: Kolemjdoucí 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");
});
Název: Re:Objasnění nefunkčního forEach-u v JS
Přispěvatel: SB 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.
Název: Re:Objasnění nefunkčního forEach-u v JS
Přispěvatel: tdvorak 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"));

Název: Re:Objasnění nefunkčního forEach-u v JS
Přispěvatel: Filip Jirsák 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…