Diese FunktionWarum führt das Protokollieren eines Funktionsausdrucks die Funktion ohne Aufruf aus?
function mapForEach(arr, fn) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
newArr.push(
fn(arr[i])
)
};
return newArr;
}
var arr1 = [1, 2, 3];
von
mapForEach(arr1, function (item) {
return item * 2;
}); // [2,4,6]
aufgerufen wird und durch diese Variable Erklärung nicht
var arr2 = mapForEach(arr1, function (item) {
return item * 2;
});
noch aufgerufen wird, wenn auf der Konsole
console.log(arr2); // [2,4,6] in the console
angemeldet aufgerufen
Warum ist hier keine Invokation notwendig?
console.log(arr2());
Ich bin immer noch nicht klar, wie diese von
unterscheidetfunction foo() { return 2 === 2 };
Protokolle Funktionsdefinition
console.log(foo); // function foo() { return 2 === 2 }
in Log-Funktion aufgerufen wird, das Rück logs Wert
console.log(foo()); // true
Weil es * durch diese Variablendeklaration aufgerufen wird. Warum denkst du anders? Sie ordnen das Ergebnis nur dem Namen 'arr2' zu. Wenn Sie dachten, Sie würden eine Funktion zuweisen, warum haben Sie es als Array bezeichnet? – jonrsharpe
Ich habe es nicht genannt, ich lese es und versuche zu lernen, ein Prozess, der passieren muss, es sei denn, Sie werden mit perfekten Javascriptkenntnissen geboren (das war ich nicht). Ich dachte, dass die Zuordnung des Rückgabewerts im Speicher nicht existiert bis zur Ausführung, die nun nach der Deklaration als arr2() erfolgen müsste, die dann synchron downline in der Ausführung des Programms zur Verfügung stünde. Also habe ich erwartet, dass console.log (arr2) eine Funktionsdefinition protokolliert. Zum Glück haben wir Dinge wie Stapelüberlauf, wo wir Fragen stellen können, auf die wir nicht bereits die Antworten haben, im Gegensatz zu Fragen, die wir machen ...? – nSideOut
Es hilft dir nicht, snarky zu sein. Die Frage "Warum denkst du anders?" Ist explorativ, um herauszufinden, wo deine falschen Vorstellungen liegen, damit wir sie direkt ansprechen können, anstatt dich nur darauf zu verweisen, ein Buch zu lesen (was alle deine Missverständnisse ansprechen sollte, was auch immer sie sind). aber ist auch fast nutzlos allgemein für ein bestimmtes Problem, das Sie haben). – Amadan