Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Kolemjdoucí 23. 11. 2015, 11:24:13
-
Ahoj, proč nepracuje 1 kód, když 2 pracuje a dělá to stejný ?
var array = [0, 1, 2];
array.forEach(myFnc[i, "b", "c"]);
var array = [0, 1, 2];
array.forEach(function(i){
myFnc(i, "b", "c");
});
-
Tipnu (Javascript neznám):
Metoda forEach očekává uzávěru/funkci o 1 parametru, to v 1. případě není splněno.
-
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:
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"));
-
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:
var array = [0, 1, 2];
array.forEach(myFnc.c);
Což asi bude něco jiného, než jste chtěl napsat…