Java→JS
Vorbemerkungen

Vorbemerkungen

Ausdrücke sind Programme

In Java kann ohne Klassen und Methoden nicht programmiert werden. In JavaScript dagegen kann jeder zulässige Ausdruck bereits als ein „Programm“ ausgeführt werden:

'Hallo, JavaScript!';
2 + 6 / 3;

Code wird intepretiert und nicht kompiliert

Die Anweisungen in JavaScript-Code werden nacheinander vom Interpreter ausgeführt. Falls eine Anweisung einen Syntax-Fehler enthält oder einen Laufzeitfehler hervorruft, wird das Programm beendet.

5 - 3;   // wird ausgeführt
8 *&^ 2; // Programm wird mit syntax error beendet

let statt var für Variablen – ohne Datentypen zu nennen

Lokale Variablen sollten mit let deklariert werden. Es gibt in JavaScript zwar auch var, aber von der Verwendung wird abgeraten. Bei der Deklaration von Variablen werden keine Datentypen angegeben und es ist erlaubt, einer Variablen nacheinander Werte verschiedener Datentypen zuzuweisen.

let x = 123;
x = 'Hallo'; // dies ist erlaubt!

Kommentare wie in Java

Genau wie in Java können Kommentare in JavaScript-Code mit // bis zum Zeilenende oder mit /* ... */ über mehrere Zeilen hinweg angegeben werden.

Strings und Template-Strings

Strings können mit ', " oder ` umgeben werden. Hier wird hauptsächlich ' verwendet. Template-Strings mit ` bieten eine elegante Möglichkeit, Strings dynamisch zusammenzusetzen (String-Interpolation).

let name1 = 'Joe';
let name2 = 'Jane';
 
// Template-Strings für dynamische Interpolation
let name3 = `${name1} Smith`; // --> Joe Smith
let name4 = `${name2} Smith`; // --> Jane Smith

Funktionen als Objekte

JavaScript ist eine funktionale Programmiersprache, was u.a. bedeutet, dass Funktionen auch Objekte sind und z.B. Variablen zugewiesen werden können. In der Frontend-Programmierung im Web-Browser wird diese Tatsache häufig im Zusammenhang mit Listener- und Callback-Funktionen ausgenutzt.

const myAddFunction = function (a, b) {
  return a + b;
};
let result = myAddFunction(2, 3); // --> 5

Klassen für mehr Struktur

Oft reichen Funktionen aus, um JavaScript-Code zu strukturieren. Es gibt seit ein paar Jahren auch Klassen in JavaScript. Funktionen innerhalb von Klassen werden als Methoden bezeichnet – allerdings ohne Angabe von Datentypen.

class Person {
  constructor(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }
 
  getFullName() {
    return this.firstName + ' ' + this.lastName;
  }
}
 
let joe = new Person('John', 'Smith');
let name = joe.getFullName();

Schwächen von JavaScript

JavaScript hat einige Schwachstellen und seltsame Eigenschaften. Siehe https://bonsaiden.github.io/JavaScript-Garden/ (opens in a new tab)

true + 6; // 7
[] + []; // ''
// u.v.a.m.

TypeScript: „besseres“ JavaScript

Mit TypeScript wird JavaScript um statische Typen erweitert. Dadurch wird JavaScript-Code um einiges stabiler. TypeScript ist eine Erweiterung von JavaScript und abwärtskompatibel, d.h. JavaScript-Code ist bereits TypeScript-Code.

// dieses Beispiel bezieht sich auf TypeScript (nicht auf JavaScript!)
let x = 123; // in TypeScript ist x nun vom Typ number
x = 'Hallo'; // --> type error (in TypeScript - nicht in JavaScript!)