Diese Frage dreht sich alles um Semantik
Wenn ich Ihnen diese Daten gebe: 12
Was ist der Typ? Sie haben keine Möglichkeit, sicher zu wissen. Könnte eine ganze Zahl sein - könnte ein Float sein - könnte eine Zeichenfolge sein. In diesem Sinne handelt es sich um sehr "untypisierte" Daten.
Wenn ich Ihnen eine imaginäre Sprache gebe, mit der Sie Operatoren wie "Addieren", "Subtrahieren" und "Verketten" für diese Daten und einige andere beliebige Daten verwenden können, ist der "Typ" (für meine imaginäre Sprache) etwas irrelevant (Beispiel) : vielleicht add(12, a)
ergibt sich 109
das 12
plus dem ASCII-Wert von a
).
Reden wir eine Sekunde über C. Mit C können Sie so ziemlich alles tun, was Sie wollen, mit beliebigen Daten. Wenn Sie eine Funktion verwenden, die zwei uint
Sekunden benötigt - Sie können alles, was Sie wollen, umwandeln und übergeben -, werden die Werte einfach als uint
s interpretiert . In diesem Sinne ist C "untypisiert" (wenn Sie es so behandeln).
Wenn ich Ihnen jedoch sage, dass "Mein Alter ist 12
" - und dann 12
einen Typ hat - wissen wir zumindest, dass er numerisch ist. Mit Kontext hat alles einen Typ - unabhängig von der Sprache.
Deshalb habe ich am Anfang gesagt - Ihre Frage ist eine der Semantik. Was bedeutet "untypisiert"? Ich denke, Brendan hat den Nagel auf den Kopf getroffen, als er "keine statischen Typen" sagte - denn das ist alles, was es möglicherweise bedeuten kann. Menschen klassifizieren Dinge natürlich in Typen. Wir wissen intuitiv, dass es zwischen einem Auto und einem Affen etwas grundlegend anderes gibt - ohne jemals gelernt zu haben, diese Unterscheidungen zu treffen.
Zurück zu meinem Beispiel am Anfang - in einer Sprache, die sich "nicht um Typen kümmert" (per se), können Sie möglicherweise ein "Alter" und einen "Namen" "hinzufügen", ohne einen Syntaxfehler zu erzeugen ... aber das bedeutet nicht, dass es sich um eine logisch einwandfreie Operation handelt.
Mit Javascript können Sie alle möglichen verrückten Dinge tun, ohne sie als "Fehler" zu betrachten. Das bedeutet nicht, dass das, was Sie tun, logisch einwandfrei ist. Das muss der Entwickler herausfinden.
Ist ein System / eine Sprache, die zum Zeitpunkt der Kompilierung / Erstellung / Interpretation keine Typensicherheit erzwingt, "untypisiert" oder "dynamisch typisiert"?
Semantik.
BEARBEITEN
Ich wollte hier etwas hinzufügen, weil einige Leute anscheinend mit "Ja, aber Javascript hat einige" Typen "" beschäftigt sind.
In meinem Kommentar zur Antwort eines anderen sagte ich:
In Javascript könnte ich Objekte haben, die ich als "Affen" aufgebaut habe, und Objekte, die ich als "Menschen" aufgebaut habe, und einige Funktionen könnten so gestaltet sein, dass sie nur mit "Menschen" funktionieren, andere nur mit "Affen" und noch andere nur auf "Things With Arms". Ob der Sprache jemals gesagt wurde, dass es eine solche Kategorie von Objekten wie "Dinge mit Waffen" gibt oder nicht, ist für die Montage ("untypisiert") ebenso irrelevant wie für Javascript ("dynamisch"). Es ist alles eine Frage der logischen Integrität - und der einzige Fehler wäre, etwas zu verwenden, das mit dieser Methode keine Waffen hatte.
Wenn Sie also davon ausgehen, dass Javascript intern einen "Begriff von Typen" hat - und damit "dynamische Typen" - und denken, dass dies irgendwie "deutlich anders ist als ein untypisiertes System", sollten Sie anhand des obigen Beispiels erkennen, dass jeder "Begriff von" Typen "es hat intern ist wirklich irrelevant.
Um dieselbe Operation beispielsweise mit C # auszuführen, BRAUCHE ich eine Schnittstelle namens ICreatureWithArms
oder etwas Ähnliches. Nicht so in Javascript - nicht so in C oder ASM.
Es ist klar, ob Javascript überhaupt ein Verständnis für "Typen" hat oder nicht.