Javascript
Beschreibung
- Dynamisches Typenkonzept
- Objektorientierter und funktionaler Stil möglich
positiv
- Mächtige unde moderne Sprachkonzepte
- Leistungsfähige Laufzeitumgebungen
negativ
- Design Mängel aus den Anfangstagen
- Grundlegende Änderungen nicht möglich, da nur Erweiterungen möglich sind
Standards
- ECMAScript
- versionen
- ES3: 2000 - 2010 (verbreitete Version)
- ES4: Übung 2008 abgebrochen
- ES5: 2009, kleineres Update
- ES6: 2015, umfangreiche Neuerungen
- ES7, Javascript 2016
- Nun jährliche Updates
- Transpiler: Babel
Console
### Formatiertes ausgeben
let x = 30;
console.log("the value of x is ", x);
// -> the value of x is 30
console.log("my %s has %d ears", 'cat' 2);
// -> my cat has 2 ears
Konsole löschen
console.clear()
Stack trace ausgeben
Wird bei Fehlern oft automatisch ausgegeben.
console.trace()
Zeit messen
console.time()
console.log("Welcome to Programiz!");
console.timeEnd()
// default: 3.572ms
### Fehler ausgeben
console.error()
Zahlen
- Zahlentyp in JavaScript: Number
- 64 Bit Floating Point entsprechend IEEE 754 (double in Java)
- Enthält alle 32 Bit Ganzzahlen
- Konsequenz alle Java int auch in JavaScript exakt dargestellt
- Weitere Konsequenz: oft Rechnunggenauigkeit mit Zahlen mit Nachkommastellen
## Zahlenliterale
| Typ | Beispiel | | Ganzzahlliteral | 17 | | Dezimalstellen | 3.14 | | Dezimalpunktverschiebung (*10^x) | 2.998e8 |
Nicht exakte Zahlen
0.1 = 0x3FB999999999999A, entspricht nicht exakt 0.1 0.25 // hexadezimal 3FD0000000000000, entspricht exakt 0.25
Ausdrücke
- Rechenoperationen wie in Java
- Spezielle Zahlen: Infinity, -Infinity, NaN
100 + 4 * 11 // 114
(100 + 4) * 11 // 1144
314 % 100 // 14
1/0 // Infinity
Infinity + 1 // Infinity
0/0 // NaN (Not a Number)
BIGINT
- Mit ES2020 eingeführt
- Lieterale mit angehängem n
- Keine automatische Typumwandlung von/zu Number
1n + 2n // 3n
2n ** 128n // 340282366920938463463374607431768211456n
BitInt(1) // 1n
Number(1n) // 1
1n + 1 // Cannot mix BigInt and other types
Typeof
- Operator, der TypString seines Operanden liefert
typeof(12) // 'number'
typeof(2n) // 'bigint'
typeof(Infinity) // 'number'
typeof(NaN) // 'number'
typeof('number') // 'string'
## Strings
- Sequenz von 16-Bit-Unicode-Zeichen
- Kein spezieller char-Typ
- Strings mit "..." und '...' verhalten sich gleich
String-Verkettung
`con` + "cat" + 'enate' // 'concatenate'
Escape Sequencen
Sequenz | Bedeutung |
---|---|
\\ | Backslash |
\n | newline |
\r | carriage return |
\v | vertical tab |
\b | backspace |
\f | form feed |
\uXXXX (4 Hexziffern) | UTF-16 code unit |
\xXX (2 Hexziffern) | ISO-8859-1 character |
\XXX (1-3 Oktalziffern) | ISO-8859-1 character |
Template Strings
- \ wird als \ interpretiert (Ausnahme vor `, $ und Leerzeichen)
- Kann Zeilenwechsel enthalten
- String-Interpolation: Werte in String einfügen
`half of 100 is ${100 / 2}` // half of 100 is 50
`erste Zeile
zweite Zeie` // 'erste Zeile\nzweite Zeil'
Logische Ausdrücke
- Typ boolean mit Werten: true / false
- Vergleiche liefern Ergebnis vom Typ boolean
- Logische Operatoren entsprechen denen in C und Java
- Strings sind Werte: Vergleich mit == ist kein Problem
typeof(true) // 'boolean'
3 > 4 // false
1 < 2 && 2 < 3 // true
4 >= 5 || !(1 == 2) // true
"ab" == "a" + "b" // true
NaN == NaN // false
Spezielle Werte
null // null
undefined // undefined
let wert // wert = undefined
wert // undefined