JavaScript - Eine Einführung (Stefan Bosse) [6.2020] |
Variablen besitzen keinen Datentyp sondern sind polymoprhe Referenzen auf Werte:
var p;
p=0;
p=[1,2,3]
print(typeof p)
Folgende Grunddatentypen können Werte besitzen:
Funktionen sind Werte erster Ordnung (Lambda Ausdrücke, d.h. hier anonyme Funktionen)
function (par1?, par2?, ..) { .. }
Variablen werden über das var Schlüsselwort definiert und könnnen initial mit einem Wert geladen weerden:
var x,y,z=expr;
Ausdrücke setzen sich aus Variablen, konstanten Werten, Operatoren, und Funktionsaufrufen zusammen:
op1 + - / * % & && | || op2
f(arg1,arg2,..)
Zeichenketten sind unveränderlich und werden zwischen Hochkommas definiert 'character'
oder "character"
▸
|
✗
|
Achtung: Wird eine Variable ohne Definition mittels der var Anweisung benutzt (auf der linken Seite einer Zuweisung), wird immer einer globale Variable erzeugt!
▸
|
✗
|
function name (par1?, par2?, ..) {
return expr
}
Folgende Funktion berechnet die mathematische Fakultät über das Konzept der Rekursion:
▸
|
✗
|
▸
|
✗
|
if (expression) { is true }
if (expression) { is true } else { is false }
switch (expression) {
case v1: .. break;
case v2: .. break;
..
default: ..
}
for (init;test;change) {
..
}
for (i=a;i<b;i++) {
..
}
▸
|
✗
|
Arrays können mehrsortig sein!
[1,2,3]
[1,true,'test']
[{x:1},{x:2},{y:1}]
Erzeugung eines Arrays mit Werten durch eckige Klammerpaare [v1,v2,..]
Arrays von Arrays sind auch möglich (Matrizen)
Zugriff auf Arrayelement durch Indexoperator arryay[index]
, ebenso wertzuweisung möglich. Erstes Element hat Index 0!
a=[1,2,3]
a[0]=0
Arrays sind auch Objekte mit Methoden:
array.length()
mappedarray = array.map(function (v,index) { return expr })
filteredarray = array.filter(function (v,index) { return true or false })
array.push(v)
last = array.pop()
copy = array.slice()
sub = array.slice(a,a+n);
revarray = array.reverse()
▸
|
✗
|
▸
|
✗
|
Implementiere eine Funktion die die ersten Fibonacci Zahlen im Bereich [1,9] berechnet und als Array zurückgibt
Nutze eine Zählschleife for
▸
|
✗
|
Objekte sind in JavaScript zunächst Datenstrukturen (Records) der Form:
{
attribute : value,
..
}
Dabei sind die Attribute Elementnamen die beliebige Werte besitzen können (veränderlich)
Auf ein Element (Attribut) eines Objekts wird durch den Punktoperator sowohl lesend als auch schreibend zugegriffen record.attribute
Werte von Attributen können weitere Datenstrukturen sein, so dass sich eine Punktoperatorkette ergibt record.selector.selector.
▸
|
✗
|
Objekte können auch Funktionen als Werte enthalten. Jedoch können diese Funktionen nicht auf das Objekt zugreifen in dem sie eingebunden wurden.
Damit Funktionen zu Methoden werden bedarf es einer Objekterzeugungsfunktion (Konstruktor) und einer Reihe von Prototypenfunktionen die an diesem Konstruktor gebunden werden:
-- Definition der Konstruktorfunktion --
function C(par1,..) {
this.x1=expression;
..
}
-- Definition der Prototypen --
C.prototype.methode1 = function (par1,..) {
this.x1=..
}
C.prototype.methode2 = function (par1,..) {
this.x1=..
}
..
-- Instanziierung eines Objekts von der Konstruktirfunktion --
var obj = new C(..);
obj.methode1(..)
obj.methode2(..)
..
▸
|
✗
|
Arrays sind in javaScritp mehrsortig, d.h. jedes Element kann einen Wert unterschiedlichsten Datentyps enthalten
Daher können Arrays und Records (rein Datenstrukturen) gesmischt werden
Elemente von komplexen Strukuren mit Arrays können durch eine Kette von Dereferenzierungen erreicht werden s.x.y[i].z
▸
|
✗
|
Math.sin(rad)
Math.cos(rad)
Math.tan(rad)
Math.pow(x,e)
Math.log(x)
Math.sqrt(x)
Math.abs(x)
In Notebooks und Workbooks kann eine erweiterte Bibliothek geladen bzw. enthalten sein (Plugin math.plugin
)
Dabei bringt die Erweiterung auch zusätzliche Funktionen/Methoden für Arrays mit sich:
// Module
Math.Vector.
Math.Matrix.
Math.random.
Math.signal.
// Funktionen
Math.equal(a,b)
Math.distance(p1,p2)
// Array Erweiterungen
array.add(b) // [a0+b0,a1+b1,..]
array.contains(x)
..
Math.statistics
→ Math.statistics APIMath.statistics.entropy(list)