Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Java Script Versuch

Empfohlene Antworten

Veröffentlicht

Hallo ihr lieben,

Hallo:)

Ich will das meine funktion sowohl add (2)(4) akzeptiert als auch add(2,4)

Einzeln würden die Funktionen so aussehen:

function add1(x,y){

return x + y;

}

function add2(x) {

return function(y) {

return x + y;

};

}

Dann wollte ich sie zusammenfügen, aber irgendwie bekomme ich es nicht hin:

function add (x,y){

if(!y){ return x function(x){

return function(y) {

return x + y;

};

}

}

return x+y;

}

Kann mir jemand helfen?

Ich verstehe nicht, was du vorhast...

was soll

add (2)(4) akzeptiert als auch add(2,4)

bedeuten?

Eine Funktion, die zwei Parameterübergaben hat?

funktion(param1)(param2) ??

Parameterübergabe findet immer komma-separiert statt. Oder als Array/Pointer/Object/etc.

Aber das,was du vor hast existiert in JavaScript nicht. Und mir fällt keine aktuelle Sprache ein, die das akzeptieren würde.

In beiden fällen addierst du doch x + y ?

Oder sollte es so aussehen?

<script type="text/javascript">

function add()

{

var result = 0;

for (var i=0, args = arguments.length; i < args; i++)

{

if (typeof arguments=="number")

result += arguments;

}

document.write(result);

return (result);

}

add(1, 2);

add(3);

add(4, 5, 6, 7, 8, 0, 11);

</script>

Ich sehe es wie Klotzkopp, bevor hier "rumorakelt" wird was für eine Lösung / Problem hanka hat sollte die Fragestellung eventuell überarbeitet werden.

Zumindest ich werde aus den oben geschriebenen auch nicht wirklich schlau.

  • Autor

Ok ich will das meine add methode sowohl (2,3) (2)(3) addieren kann.

Oben habe ich in add1 und add2 zwei Methoden geschrieben mit denen ich erst das eine und dann dass andere machen kann.

Dann habe ich rumgetüfftelt, ob ich beide zusammenwerfen kann.

Meine Idee ist dabei, mit "if(!y)" zu erfragen, ob die methode einen zweiten Parameter hat.

wenn es keinen hat soll er nur x zurückgeben und dann wie in add2 mit y weiterarbeiten.

Ich denke ich habe irgendeinen syntaxfehler versteckt. Hoffentlich konnte ich es nun besser

erklären.

  • Autor

@uenetz

Vielen Dank für die schnelle Antwort. Aber bei deiner Idee kann ich ja einfach so viele Parameter wie ich will einfügen.

Ich will tatsächlich entweder zwei parameter haben oder zweimal einen.

Meine Idee ist dabei, mit "if(!y)" zu erfragen, ob die methode einen zweiten Parameter hat.
Ich habe doch beschrieben, wie man auf fehlende Parameter prüft. Mit Google findet man das auch ziemlich leicht.

Ich denke ich habe irgendeinen syntaxfehler versteckt. Hoffentlich konnte ich es nun besser

erklären.

Wenn du eine Fehlermeldung bekommst, solltest du sie uns verraten.
  • Autor

Das mit if(!y) funktioniert ja. Also wenn ich dann nur return x schreibe, dann gibt er nur return x aus.

Also so:

function add (x,y){

if(!y){ return x

}

return x+y;

}

Dann wäre ich schonmal soweit, dass add(2) und add(2,3) geht. Also auch nur ein parameter akzeptiert werden.

Fehlermeldung bekomme ich nicht. Ich meinte Semantikfehler.

Ist mein Code nachvollziehbar oder besser gesagt meine Idee die dahinter steckt?

Dann wäre ich schonmal soweit, dass add(2) und add(2,3) geht. Also auch nur ein parameter akzeptiert werden.
Moment, das passt nicht zusammen. add(2) kann nur entweder ein Ergebnis zurückgeben, oder eine Funktion, die einen weiteren Parameter erwartet. Beides geht nicht.

Ich weiß zwar nicht, warum so einige hier nur schreiben, um ihren Kommentar abzulassen, dass dieses Konstrukt mit keiner Sprache funktionieren würde, mit JavaScript geht es.

An sich mag die Aufgabe bei dieser Funktion auch nicht so viel Sinn ergeben, aber ich finde, dass sie relativ gut die Funktionsweise von anonymen Funktionen aufzeigt.

Um auf das Problem zurück zu gekommen, bei der Ausführung der Funktion müsste eigentlich ein Fehler geworfen werden, da du versuchst x und die anonyme Funktion function(x) mit return zurück zu geben. Da hast du dich denke ich verschrieben.

Desweiteren funktioniert deine Funktion dann aber auch noch nicht wie von dir erwartet. Sie würde erst das richtige Ergebniss ausgeben, wenn du sie z.B. folgendermaßen aufrufst:

add()(4)(5) 

Dieser Aufruf gibt 9 zurück. Vielleicht findest du also den zweiten Fehler auch alleine ;)

Bearbeitet von Dragon8

  • Autor

Oh danke schon mal für den Ansatz. Ich denke aber ich hab einen Knoten im Kopf. Reicht es den, wenn ich zwischen return und function(x) ein + setze? Sorry bin nicht so in der syntax von javascript zuhause. Alles noch ein bisschen verwirrend.

Oh danke schon mal für den Ansatz. Ich denke aber ich hab einen Knoten im Kopf. Reicht es den, wenn ich zwischen return und function(x) ein + setze? Sorry bin nicht so in der syntax von javascript zuhause. Alles noch ein bisschen verwirrend.

Nein. An sich möchtest du eine Funktion bauen, die bei zwei Argumenten die Summe aus diesen zurückgibt oder wenn nur ein Argument übergeben wird, eine Funktion zurückgibt, die das zweite Argument aufnimmt und dann die Summe dieser beiden Argumente zurückgibt.

Wenn du also nicht ganz mit der Syntax von JavaScript vertraut bist, solltest du dich erstmal in die Grundlagen einarbeiten und dich dann für diese Aufgabe speziell mit Closures beschäftigen.

  • Autor

ja genau das möchte ich. Dann stimmt aber doch schon mal der Ansatz?

Oder wie kann ich erst x bekommen und dann die zweite funktion?

Für deinen zweiten Ansatz denke ich hab ich schon eine Lösung. Aber bei dem return, vergesse ich doch gerade nur

irgenwas...

Der Ansatz stimmt bis zum return soweit, bis auf den zweiten Fehler den ich dir vorhin beschrieben habe und die von Klotzkopp angemerkte Prüfung auf fehlende Parameter.

Wenn ich deine Aussagen aber richtig deute, scheinst du zu denken, du müsstest beim return in der add-Funktion schon irgendetwas addieren. Das ist falsch. Deswegen hatte ich dir nochmal aufgeschrieben, was deine Funktion machen sollte. Nämlich erst die von der add-Funktion zurückgegebene Funktion addiert wirklich deine Werte und gibt diese zurück. Die add-Funktion selber addiert die Werte nur, wenn wirklich beide Werte übergeben wurden, ansonsten sie nur eine Funktion zurück. Diese zurückgegebene Funktion erwartet dann einen weiteren Parameter und addiert dann den Parameter der add-Funktion und den Parameter den sie selber übergeben bekommen hat.

An sich hast du es mit deinen add1 und add2 Funktionen ja auch schon richtig gemacht. Eigentlich musst du also nur nach der Überprüfung auf einen fehlenden Parameter den Inhalt deiner add2 Funktion als anonyme Funktion zurück geben.

  • Autor

Ah ja und genau bei der function nehme ich eine anonyme Funktion. Damit ich die add() (3)(4) Problem umgehe.

Das versteh ich. Also einfach function(){...};

Aber ich häng noch am ersten Fehler. Denke langsam das ich ein bisschen blöd bin...

Das funktioniert doch eigentlich ganz simple.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.