7 unnötige Anfängerfehler beim Programmieren (in JavaScript)

Поділитися
Вставка
  • Опубліковано 12 гру 2024

КОМЕНТАРІ • 72

  • @TS-cj5ir
    @TS-cj5ir 2 роки тому +9

    Bin gerade am Anfang und habe begonnen, Javascript zu lernen, und da kommt dieses Video genau richtig. Danke dafür! 👍

  • @n-olivier
    @n-olivier 2 роки тому +4

    2:05 noch 'n kleiner Tipp - Variablen mit Kennung versehen. zb. nRadius = nummeric, cName = char
    gerade bei größeren Projekten wo z.B: ein stringformatierer "Radius" vorkommt ist es einfacher zu wissen was man übergibt
    6:40 kleine BatchDatei (gibt mittlerweile auch Tools dafür) die stündlich autom. die letzten Änderungen speichert (z.B. die letzten 30 Änderungen) auf Platte und diese dann täglich auf eine andere Platte -> 30 Tage ;-) sind dann bis zu 90 Änderungen.

    • @pinkeHelga
      @pinkeHelga 2 роки тому +2

      type prefixes sind ein Glaubenskrieg. :)
      Ich stehe auch eher auf JSDoc bzw. dessen Entsprechung der jeweiligen Sprache, die meine IDE dann versteht und entsprechend meiner Konfiguration dann auch anzeigt. (Ich hab's so eingerichtet, daß bei Strg-Taste alle möglichen Type-Infos etc. eingeblendet werden. Kann man auch dauerhaft haben)
      Bezeichner-Prefixes verwende ich hingegen für public/private Zugriffsmodi.
      Und bei der Entwicklung im Team muß es sowieso Konventionen geben, an die sich dann alle halten. Dazu gehören auch Groß-/Kleinschreibungsmuster verschiedener Bezeichner wie Variable, Konstante, Funktion, Objekt, Klasse...
      Wie schon im Video andeutet, gibt es VCS wie git, svn & co., die wesentlich besser geeignet sind als Backups. Aufwand ist min. genauso gering wie die Einrichtung eines Autobackups. Versionskontrolle ist exakt auf Softwareentwicklung zugeschnitten.
      Dieser Tip mit manuellen Kopien ist nur als erste Maßnahme bei den ersten Schritten in der Programmierung gemeint.

    • @n-olivier
      @n-olivier 2 роки тому

      @@pinkeHelga Glaubenskrieg - jep, Lässt sich aber schnell beseitigen wenn du mit unterschiedlichsten Sprachen programmierst. Denn das ist das einzige was man in jeder Sprache anwenden kannst. Ich habe gezwungenermaßen aktuell 5 verschiedenen. Da könnte man ganz schnell den Überblick verlieren.

    • @OlafSt
      @OlafSt 2 роки тому +1

      Ungarische Notation bei untypisierten Sprachen wie JavaScript ist absolut sinnvoll. So hat man wenigstens einen Hinweis darauf, was für ein Parametertyp da gefragt ist ;) Und da wir hier von JS reden, ist es auch okay, das zu erwähnen.
      Bei typisierten Sprachen wie Delphi oder C# ist das aber überflüssig (und verpönt) denn das Syntax Highlighting hilft einem, das Intellisense zeigt einem den gefragten Variablentyp und der Compiler lässt dann auch nur noch den passenden Typ zu.

  • @misterwriter
    @misterwriter 2 роки тому +5

    Die Erklärung des JavaScript Doc Kommentars ist super, das hat noch niemand erwähnt.

  • @Olivier.Luethy
    @Olivier.Luethy 2 роки тому +3

    Geniale Tipps. Auch wenn ich JavaScript schon eine Weile kenne, habe ich etwas dazu gelernt. Geniales Video, Danke!!

  • @TwilightShiek
    @TwilightShiek 2 роки тому +3

    11:41 - Ich mag es, dass ich mit dem Falschschreiben von "return" beim ersten Versuch nicht alleine bin :D Ich tippe so oft erstmal irgendwas mit "reut" am Anfang ein, das ist echt schlimm :D

  • @siskoDE
    @siskoDE 2 роки тому

    bei Minuten 11:48 musst du der function noch die variable ''i' zusätzlich zu 'search' mitgeben. Stimmts? Wenn ja, dann habe ich hier alles verstanden und schaue mir gerne mehr Videos an. Guter Content.

  • @Rakilicious
    @Rakilicious 2 роки тому +5

    sehr gute Tipps, aktuell sind meine Funktionen in Python mega lang. Vielen Dank :D

  • @Aganar
    @Aganar 2 роки тому +12

    1) Bitte Vergleiche mit "===" und nicht "==" in JS :D
    2) Backups in Ordnern? Schaut euch lieber direkt Git an (kann auch nur lokal genutzt werden, oder über GitHub, Bitbucket etc.)
    3) Gabs nicht im Video, aber gerade bei JS Anfängern... BITTE KEIN "var" BENUTZEN! :) findet man leider noch viel zu oft besonders in älteren Tutorials
    4) Wenn man aus dem kompletten Anfänger Status raus ist, schaut euch Linter an (zb. ESLint), die helfen euch Formatierfehler zu verhindern

    • @hakuryyuu
      @hakuryyuu 2 роки тому +1

      Genau meine Gedanken ^^

    • @pinkeHelga
      @pinkeHelga 2 роки тому +1

      `var` ist zu unrecht verpöhnt und gehört zum Sprachkonzept. Es wird nur zu oft falsch zwischen var/let/const unterschieden. `var` ist function scope und kann auch semantisch als solches eingesetzt werden. Man kann aber auch z.B. im Schleifenkopf eine Variable aus dem block scope mittels `var` herausheben, wenn man die Variable außerhalb der Schleife noch auslesen will, z.B. Zählerstand nach frühzeitigem Abbruch. So muß sie nicht extra vor der Schleife deklariert werden. Programmierstil ist Geschmacksache.

    • @cardtrixxer
      @cardtrixxer 2 роки тому

      was ist der unterschied zwischen == und ===

    • @pinkeHelga
      @pinkeHelga 2 роки тому +3

      @@cardtrixxer gleich und identisch.
      '1' == 1 ist true / gleich
      '1' === 1 ist false / nicht identisch
      auch
      '0xa' == 10 und
      '1e1' == 10 ist true
      parseInt('1a') ist 1
      aber '1a' == 1 ist false
      Es findet beim Identitätsoperator keine implizite Typumwandlung statt. Der Vergleichsoperator ist ok, wenn man alle Spezialfälle der Umwandlung kennt und exakt das wünscht (hat Seltenheitswert). In fast allen Situationen ist der Identitätsoperator das, was Du am ehesten willt.

    • @npc386
      @npc386 2 роки тому

      @@pinkeHelga sehe ich ähnlich, wenn ich mir angucke wie die leute immer const's innerhalb der schleifen deklarieren um einen wert zwischen zu speichern frage ich mich was das soll, ein var vor der schleife wäre effizienter anstatt mit jeden schleifendurchlauf eine neue const anzulegen. aus mir unverständlichen gründen halten viele es für einen unsauberen stil mit var oder let zu arbeiten...

  • @mrballou1978
    @mrballou1978 2 роки тому +2

    Auch gut ist das man in der settings.json Datei von vscode das hier hinzufügen sollte:
    "js/ts.implicitProjectConfig.checkJs": true
    das sorgt dafür das vscode mit TypeScript checking über die JS File drüber geht. Das sorgt dafür das es bei z. B. String auf eine Boolean zuweisen er ein Fehler gibt.
    Meiner Meinung nach ein muss. Doch aufpassen! Bei existierenden Projekten kann es dafür sorgen, dass die ganze Datei rot wird.
    Das "zwingt" User auch JavaScript Doc Kommentare zu nutzen

  • @predi2kify
    @predi2kify 2 роки тому +2

    Top Video & sehr hilfreich, gerne mehr davon. :)

  • @ZumGewinn
    @ZumGewinn 2 роки тому +1

    Danke sehr, das nehme ich mit, Funktionen kleiner halten für die Nachvollziehbarkeit :)👍

  • @darkintaqt
    @darkintaqt 2 роки тому +2

    Also zum vierten Fehler… ich mache diesen „quasi“ mit Absicht, da ich es lesbarer finde und mein Code von nem minifier nach dem programmieren eh komplett unleserlich gemacht wird, dieses Feature mit inbegriffen

  • @xonarz6248
    @xonarz6248 2 роки тому +2

    Hey Junus, ich hab da ein kleines anliegen, ich habe gelernt, dass man heutzutage Funktionen in eine Variable packt z.B. "let meineFunktion = function() {};" Wegen dem Hoisting prinzip. Hab ich da was falsch verstanden ?

    • @Programmierenlernen
      @Programmierenlernen  2 роки тому

      stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname schau dir das mal an. Wenn du eine Funktion mit let definierst, verzichtet du bewusst auf das Hoisting Prinzip.

    • @xonarz6248
      @xonarz6248 2 роки тому

      @@Programmierenlernen Also hab ich es doch richtig verstanden :) Ich hab halt gelernt, dass man das Hoisting Prinzip heutzutage umgehen sollte. Aber vermutlich ist das auch von Anwendung zu Anwendung unterschiedlich :)

    • @pinkeHelga
      @pinkeHelga 2 роки тому

      @@xonarz6248 Was man tun und lassen soll, kannst Du oftmals getrost vergessen. Es gehört zum Sprachkonzept und ist nicht als deprecated gekennzeichnet. Es gibt zu so ziemlich jedem Konzept Glaubenskriege in der Programmierwelt. Wäre hoisting böse, hätte man es in jüngeren ECMA Versionen längst entfernt. Es wurde ja ganz bewußt so implementiert.

  • @manufried8793
    @manufried8793 9 місяців тому

    Ich wünschte ich hätte Eure Plattform früher gefunden.
    Jetzt stecke ich bei einem anderen Anbieter fest.😅

  • @stefankahnert9632
    @stefankahnert9632 2 роки тому +1

    Zu 4. Wieso benutzt ihr den == Operator, statt dem === Operator? Das ist eigentlich unsaubere Programmierung

  • @stefankahnert9632
    @stefankahnert9632 2 роки тому +2

    Zu 7. Einzelne Zeilen Code in eigene Funktionen auszulagern halte ich für over Engineering, sofern dieser Code nicht an anderer Stelle wiederverwendet wird. Wieso nicht einfach mit Kommentaren arbeiten?

    • @pinkeHelga
      @pinkeHelga 2 роки тому

      Sehr berechtigter Einwand! In manchen Sprachen kann man inline-Funktionen explizit erzwingen, da kann man dann drüber reden, auch kleinere Codes kosmetisch auszulagern. Solche Funktionen werden dann vom Compiler wieder als include behandelt und ohne Funktionsaufruf eingefügt/ersetzt.
      Ansonsten ist bei solch kleinen Codefragmenten der Overhead des Funktionsaufrufs größer als die Codeausführung selbst, was sich innerhalb einer Schleife schnell summiert.

  • @potschochterpotschochter2403
    @potschochterpotschochter2403 2 роки тому

    Ich stehe selber ganz am Anfang. Aber wie kann ich auf eine Funktion zugreifen, die doch vorher noch gar nicht definiert wurde?
    Siehe Zeitstempel 9:58 ????? Laut meinem Verständnis wird das Programm ja Zeile für Zeile gelesen und in Echtzeit interpretiert.
    Ich versteh die Welt nicht mehr 😞. Bitte um Aufklärung.

    • @florianhundegger
      @florianhundegger 2 роки тому +2

      das ist eine Besonderheit in JavaScript und nennt sich "Hoisting". Kurz gesagt werden alle Funktionen, die mit dem function keyword definiert sind, vom Compiler am Anfang deines Codes gepackt

    • @potschochterpotschochter2403
      @potschochterpotschochter2403 2 роки тому

      @@florianhundegger Danke, das erklärt einiges. Kenne bisher ja nur Python.

    • @florianhundegger
      @florianhundegger 2 роки тому

      @@potschochterpotschochter2403 kein Problem :)

  • @metka___2655
    @metka___2655 2 роки тому +1

    ich lerne Java erst seit einer woche und Java ist die erste Programmier Sprache die mir Spaß macht aber für ein Beruf welche und wie viele Programmier sprachen muss man können

    • @misterwriter
      @misterwriter 2 роки тому +1

      Dies hier ist JavaScript und nicht Java, zwei verschiedene paar Schuhen. 😉

    • @metka___2655
      @metka___2655 2 роки тому

      @@misterwriter die Tipps die er da zeigt funktionieren auch in Java um es Übersichtlicher zu machen ich bin Anfänger und meine Codes waren Unübersichtlich

    • @ItIsJan
      @ItIsJan 2 роки тому

      java ist an sich für einen beruf schon gut

    • @ItIsJan
      @ItIsJan 2 роки тому

      java ist an sich für einen beruf schon gut

    • @KarmaMan82
      @KarmaMan82 2 роки тому

      @@misterwriter Wenn jemand SOAP oder REST einbaut, haben sich beide lieb!

  • @ritaschulz6536
    @ritaschulz6536 2 роки тому

    Schönen Tag. Der Umfang eines Kreises ist U = Pi * d , oder U = Pi * r * 2. Denn ( a ) ist der Flächeninhalt. Ja Formeln sind wichtig, und meine ist richtig. So viel dazu.
    EOF
    EOT

  • @-mbn-
    @-mbn- 2 роки тому +1

    11:46
    Zeile 13 -> i ist nicht definiert 🙂

    • @pinkeHelga
      @pinkeHelga 2 роки тому +1

      Deswegen wäre ein grundlegender Tip: Refactoring der IDE verwenden statt manuell umzuschreiben. :)

  • @KAskar-nv3dp
    @KAskar-nv3dp Рік тому

    Puuuhh….bin Anfänger und stolpere über Dich.
    Machste toll👍🏻.
    Bin Mitte 50…kann Dir gut folgen;
    Dankeschön 😁🙏🏻🙏🏻🙏🏻

  • @nicolasj6745
    @nicolasj6745 2 роки тому +1

    6:17
    Wieso sollte man als Programmierer immer wiederkehrende Dinge (Backups) manuell erledigen?
    Ich habe mir in VBA (die Excel Programmiersprache) einen Code geschrieben, der jedes mal wenn ich auf "Speichern" drücke
    - nach dem normalen Speichern die gerade gespeicherte Datei kopiert (also die xlsm-Datei)
    - in den Backupordner des heutigen Tages packt (wenn heutiger Tag noch nicht vorhanden, dann neu anlegen)
    - die Datei so umbenennt, dass sie den jetzigen Zeitpunkts als Namen bekommt (nur bissl umgewandelt, weil Doppelpunkte mag Windows in Namen nicht 😬)
    - einen Timer setzt, der in 15min eine Textbox aufploppen lässt, dass ich doch bitte speichern soll
    Alle 15min speicher ich also (oder bekomme zumindest eine Benachrichtigung) und eine Sicherungskopie wird automatisch in den Backupordner des richtigen Tages erstellt
    Und das beste:
    Ich muss nur 2 Zeilen Code ändern, um das Benachrichtigungsintervall einzustellen (alle 5min? Alle 30min?) Und den Speicherort zu ändern.
    Soll der Backupordner auf eine externe Festplatte?
    USB?
    Anderes Laufwerk?
    In einen firmeninternen Abteilungsorder?
    In den Onedrive Ordner (wenn man es in der Cloud haben will)?
    --> Einmal Dateipfad rausfinden und in einer Zeile hardcoden
    Und die hardgecodete Variable zieht der sich dann bei dem Sicherungskopie-Makro.

  • @michaelkotthaus7120
    @michaelkotthaus7120 2 роки тому +1

    Danke. Das sind alles gute Tipps. Aber der Kreisumfang wird im Englischen i.A. als "circumference" bezeichnet (1:24).

  • @klidepiano8540
    @klidepiano8540 2 роки тому +1

    Vielen Lieben Dank :)

  • @E942-h2d
    @E942-h2d 2 роки тому

    Ich, der in Assembler Sprachen schreibt: Funktionen lesbarer machen. Viel Glück!
    Da sind die Kommentare länger als der Code selbst... sehr viel länger.

  • @svenjaw6723
    @svenjaw6723 2 роки тому

    Könntet ihr vielleicht mal ein Tutorial zu Git bzw. Github machen? Finde ich sehr wichtig.

  • @patrickfischer1961
    @patrickfischer1961 2 роки тому +1

    Cooles refactoring Beispiel am Schluss. Wenn wir aber schon dabei sind, könntest du einen Hinweis auf Side Effects ua-cam.com/video/ZWd1jI9mmNo/v-deo.html. Die besprochene Funktion sucht nicht nur nach Pokémon sondern rendert diese auch. Dies wäre ein ungewünschter Nebeneffekt ausser die Funktion wäre noch nicht korrekt benannt.

  • @derallerechte3257
    @derallerechte3257 2 роки тому +2

    Sehr gutes Video

  • @AlphaWhiskers
    @AlphaWhiskers 2 роки тому

    11:54 pokemonExists dürfte nicht funktionieren ohne i =D

  • @umutdurmaz3461
    @umutdurmaz3461 Рік тому

    Variablen nicht deklarieren: Es ist wichtig, Variablen zu deklarieren, bevor man sie verwendet. Wenn man es nicht tut, wird JavaScript eine globale Variable erstellen, was zu unerwarteten Ergebnissen führen kann.
    Falsche Verwendung von Gleichheitszeichen: Wenn man Gleichheitszeichen (=) verwendet, um Variablen zu vergleichen, anstatt das Doppelgleichheitszeichen (==) oder das Dreifachgleichheitszeichen (===) zu verwenden, kann es zu unerwarteten Ergebnissen kommen.
    Fehlerhafte Anführungszeichen: Es ist wichtig, konsistente Anführungszeichen zu verwenden. Wenn man zum Beispiel ein Zitatzeichen innerhalb eines Strings verwendet, sollte man das umgebende Anführungszeichen anders wählen.
    Vergessen von Semikolons: Semikolons werden benötigt, um JavaScript mitzuteilen, dass ein Ausdruck abgeschlossen ist. Wenn man sie vergisst, kann dies dazu führen, dass der Code nicht richtig ausgeführt wird.
    Fehlerhafte Syntax: Syntaxfehler können zu Fehlern führen, die schwer zu finden sind. Eine gute Praxis ist es, den Code regelmäßig zu überprüfen und sich an Best Practices zu halten.
    Verwendung von undefinierten Variablen: Wenn man eine Variable verwendet, die nicht definiert ist, wird JavaScript einen Fehler ausgeben und der Code wird nicht ausgeführt.
    Ignorieren von Fehlern: Es ist wichtig, auf Fehlermeldungen zu achten und sie zu beheben, anstatt sie zu ignorieren. Wenn man Fehler ignoriert, kann dies zu schwerwiegenden Problemen führen, die schwer zu beheben sind

  • @johannesbeere5932
    @johannesbeere5932 2 роки тому +1

    Was auch immer Git mit cloud zu tun hat

    • @Programmierenlernen
      @Programmierenlernen  2 роки тому +2

      come on, also man kann auch extrem kleinlich sein und das Haar in der Suppe suchen..es ist doch klar wie das gemeint war..

    • @pinkeHelga
      @pinkeHelga 2 роки тому

      Kann man halt sowohl dezentral als auch cloud-basiert verwenden. Naja nicht völlig unberechtigter Einwand. :)

  • @kernbeier1612
    @kernbeier1612 2 роки тому

    Wie funktionert eine Website die beim Wechsel zwischen verschiedenen Unterseiten nicht neu laden muss? Der Zurück-Button des Browsers funktionert aber trotzdem. Beispiel für so eine Seite ist die Website des Radiosenders Bayern3. Beim Klick auf ein Element entsteht eine neue Seite aber sie lädt nicht neu. In der Konsole habe ich jedenfalls schon mal gesehen das react verwendet wird.

    • @patman7906
      @patman7906 2 роки тому +1

      Hierbei wird dynamisch das DOM verändert und muss somit nicht neu geladen werden. Man kann es sich ganz einfach so vorstellen, dass am Anfang schon alle Elemente vorhanden sind, jedoch diese erst bei bestimmten Aktionen auf sichtbar oder hidden gesetzt werden.
      Wie du bereits schon erwähnt hast, wäre ein Framework hierfür React. Ein weiteres wäre z.B. auch noch Angular😇

    • @n-olivier
      @n-olivier 2 роки тому

      Schau mal nach Ajax - damit lässt sich die Seite und der ReturnButton "manipulieren"

    • @pinkeHelga
      @pinkeHelga 2 роки тому +1

      Suchbegriffe
      - Ajax / `fetch`
      - `.innerHTML` (performanteste Methode zur DOM-Manipulation)

  • @IIIITommyIIII
    @IIIITommyIIII Рік тому

    👍👍

  • @shadowlalo214
    @shadowlalo214 2 роки тому

    du hast die 90.000 geschafft