Was bedeutet es, dass JavaScript "dynamisch" ist?

8

Ich habe aus verschiedenen Quellen (z. B. Wiki, Artikel usw.) gelesen, was Dynamik im Sinne einer Programmierung bedeutet. Wikipedia spricht darüber, wie dynamische Programmiersprachen bestimmte Programmierverhalten zur Laufzeit ausführen (im Gegensatz zur Kompilierzeit für statische Sprachen), aber ihre Erklärung ist vage und spricht darüber, wie diese Verhaltensweisen in Schwierigkeitsgrad, Komplexität und Leistung Kosten für alle Programmiersprachen variieren.

Was bedeutet also in Bezug auf JavaScript konkret, dass es dynamisch ist?

Ich mag damit völlig falsch liegen, verstehe aber JavaScript als dynamisch typisierte Sprache, da Sie den Typ vor der Instantiierung einer Variablen / Funktion (zB var, Funktion jsFunction ()) im Gegensatz zu statisch nicht angegeben haben typisierte Sprache wie Java, wo Sie einen Typ definieren, bevor Sie eine Variable / Funktion instanziieren (zB int var, public int function ()).

Hat das etwas damit zu tun?

    
OpMt 09.09.2015, 10:07
quelle

2 Antworten

9

Die meisten Sprachen haben einen Aspekt des dynamischen Verhaltens. Sogar statisch typisierte Sprachen können einen dynamischen oder varianten Datentyp haben, der verschiedene Datentypen enthalten kann.

JavaScript wird eine dynamische Sprache genannt, weil es nicht nur ein paar dynamische Aspekte hat, sondern fast alles dynamisch.

Alle Variablen sind dynamisch (sowohl im Typ als auch in der Existenz), und selbst der Code ist dynamisch. Sie können zur Laufzeit neue Variablen anlegen, und der Typ der Variablen wird zur Laufzeit festgelegt. Sie können jederzeit neue Funktionen erstellen oder vorhandene Funktionen ersetzen. Bei Verwendung in einem Browser wird Code hinzugefügt, wenn mehr Skriptdateien geladen werden, und Sie können jederzeit weitere Dateien laden.

Heutzutage wird JavaScript in vielen Implementierungen kompiliert, und statische Codes und statische Typen werden im Hintergrund generiert. Das Verhalten ist jedoch immer noch dynamisch, der Compiler generiert nur statische Typen, wenn festgestellt wird, dass die dynamischen Aspekte nicht für ein bestimmtes Objekt verwendet werden.

    
Guffa 09.09.2015, 10:40
quelle
2

Die sinnvollste wohldefinierte Art, in der JS dynamisch ist, ist, dass es dynamisch typisiert ist: Die Sprache hat Datentypen, prüft aber nicht, ob die Programmtypen "okay" sind, bis das Programm tatsächlich ausgeführt wird. Das Gegenteil ist statisch typisiert, was bedeutet, dass die Typen von Programmen von einem Programm verifiziert werden, das ihren Quellcode prüft, bevor sie ausgeführt werden. (Zum Beispiel werden Java und ML statisch typisiert.)

    
liban 28.02.2017 00:12
quelle

Tags und Links