2016-09-24 4 views
-1

Also sagen wir, ich habe eine Reihe von Funktionen. Wie gebe ich jeder Funktion einen Wert? HierWie gebe ich einen Parameter an eine Funktion in einem Array weiter?

ist ein dummes Beispiel:

var poopSong =[ 

function(this){ console.log('this is '+this);}, 
function(this){ console.log('that is '+this);}, 
function(this){ console.log('you are '+this);}, 

]; 

poopSong("poop")[1]; 
+1

Sie bedeutete 'poopSong [1] ("Poop");', nicht wahr? Verwenden Sie einfach eine ForEach-Schleife. – Xufox

+0

Warum möchten Sie nicht ein 'Array' von' Argumenten' verwenden, das Sie mit jedem der Argumente im 'Array' über eine Funktion des Aufrufs eins führen können? – DavidDomain

Antwort

1

Zunächst einmal müssen Sie die Parameter, den Sie passieren ändern, this sind ein reserviertes Stichwort und ich glaube nicht, dass Sie es verwenden möchten. Natürlich können Sie sich auf this in der console.log() beziehen. Ich glaube jedoch nicht, dass Sie das wollen. Das Wesen sagte der declartion von poopSong sollte nach so etwas wie das sein:

var poopSong = [ 
    function(a){ console.log('this is '+a);}, 
    function(b){ console.log('that is '+b);}, 
    function(c){ console.log('you are '+c);}, 
]; 

Dann können Sie wie unten ein Argument für diese Funktionen übergeben:

poopSong[0]('you value'); 

Wir verwenden die eckigen Klammern und einen Index zu erhalten ein Element eines Arrays und da in unserem Fall das Element eine Funktion ist, können wir es in Klammern verwenden und die entsprechenden Argumente übergeben.

var poopSong =[ 
 
    function(a){ console.log('this is '+a); }, 
 
    function(b){ console.log('that is '+b); }, 
 
    function(c){ console.log('you are '+c); } 
 
]; 
 

 
poopSong[0]("1"); 
 
poopSong[1]("2"); 
 
poopSong[2]("3");

+0

verdammt ich war in der Nähe, vielen Dank: D –

+0

@SonyThePony Gern geschehen! Ich bin froh, dass ich geholfen habe :) – Christos

2

gerade durchläuft das Array:

for(int i = 0; i < poopSong.Length; i++){ 
    poopSong[i]("poop"); //not poopSong("poop")[i]; 
} 
2

poopSong ist das Array, so zu bekommen, um ein Element, einen Index verwenden. Und da die Elemente im Array Funktionen sind, führe eine Funktion mit() aus und gebe einen Parameter ("value") ein;

poopSong[1]("value"); 

Jetzt, wenn Sie durch jedes Element bekommen wollen, verwenden Sie eine Schleife?

for(var i = 0; i < poopSong.length; i++) 
{ 
    poopSong[i]("value"); 
} 

oder in der Welt der funktionalen Programmierung, verwenden forEach

poopSong.forEach(function(item){ item("value"); }); 

ist es das, was Sie wirklich nach sind, die ziemlich grundlegende Dinge verursachen, oder bin ich etwas fehlt.

Zweitens don t das Wort this als Parameter verwenden, es ist ein reserviertes Wort und hat einen ganz anderen Kontext in JavaScript

+0

Was wäre, wenn ich nur die Funktion bei Index 1 ausführen möchte, ohne das gesamte Array durchlaufen zu müssen? (Ich könnte eine Bedingung innerhalb der for-Schleife verwenden, um zu überprüfen, welcher Index wir sind), aber kann ich direkt auf die Funktion am Index 1 zugreifen? –

+0

um, ja natürlich können Sie auf die Funktion bei Index 1 zugreifen, ohne durch das ganze Array zu gehen, 'poopSong [1] (" value ")' tut genau das. – OJay

+0

So ein dummer Moment, ich arbeitete an Kartenmethoden und die Antwort war so einfach, aber ich war gerade dabei, das zu verarbeiten, was ich gerade gelernt hatte, danke für deine Geduld, diese Gemeinschaft enttäuscht nie mit ihrer Geduld. –

Verwandte Themen