Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:blc:informatik:ffprg1-2023:programming-basics [2023/02/11 07:57] Ivo Blöchliger [Gültigkeitsbereich] |
lehrkraefte:blc:informatik:ffprg1-2023:programming-basics [2023/02/13 11:42] (current) Ivo Blöchliger |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Grundkonzepte imperativer Programmierung in JavaScript ====== | ====== Grundkonzepte imperativer Programmierung in JavaScript ====== | ||
- | ===== Variablen ===== | + | |
- | VariablenNamen bestehen aus Buchstaben, Zahlen und '' | + | * [[.: |
- | + | * [[.:programming-basics-if|Bedingte Ausführung | |
- | ==== Datentypen ==== | + | |
- | + | ||
- | Variablen in JavaScript können folgende Dinge speichern: | + | |
- | | + | |
- | * Strings (Zeichenketten, | + | |
- | * Array (Listen) | + | |
- | * Funktionen | + | |
- | * Objects (können als Dictionaries gebraucht werden) | + | |
- | JavaScript ist nicht typisiert und der Variablentyp wird je nach Operation automatisch konvertiert. | + | |
- | + | ||
- | <WRAP todo> | + | |
- | Öffnen Sie die Entwickler-Tools im Browser und probieren dort auf der Konsole aus, was folgende Operationen ergeben: | + | |
- | * 6*7 | + | |
- | * 6+7 | + | |
- | * " | + | |
- | Hintergrund: | + | |
- | * " | + | |
- | Hintergrund: | + | |
- | * 0.1+0.1+0.1 | + | |
- | Hintergrund: | + | |
- | * 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 | + | |
- | * [1,2]+[2] | + | |
- | Quirk von JavaScript | + | |
- | * a=[1, | + | |
- | a ist ein Array (Liste). Die Einträge sind von 0 bis $n-1$ indiziert. | + | |
- | * a[0] | + | |
- | * a[3] | + | |
- | * a[4] | + | |
- | * a[4]=55555 | + | |
- | * a[4] | + | |
- | * b={' | + | |
- | b ist ein '' | + | |
- | * b[' | + | |
- | * b[' | + | |
- | * b | + | |
- | </ | + | |
- | + | ||
- | ==== Gültigkeitsbereich ==== | + | |
- | Wird eine Variable einfach so verwendet, ist sie immer **global**, d.h. im gesamten Code sichtbar und auch veränderbar. Vor allem letzteres kann zu unerwünschten Effekten führen. Globale Variablen sind deshalb so weit sinnvoll zu vermeiden. | + | |
- | + | ||
- | Im Zweifelsfall sind alle Variablen innerhalb einer Funktion mit **let** zu deklarieren. Diese sind dann nur im Block gültig, indem sie deklariert wurden. | + | |
- | + | ||
- | <code javascript> | + | |
- | x = 42; // Globale Variable | + | |
- | let y = 23; // Auch global, weil ausserhalb einer Funktion | + | |
- | + | ||
- | function hello() { | + | |
- | console.log(`Am Anfang der Funktion kann nicht auf x zugegriffen werden, weil x später mit let definiert wird. (ReferenceError: Cannot access ' | + | |
- | z = 72; // Globale Variable | + | |
- | let x = 12; // Lokale Variable (die globale Variable x ist nicht mehr direkt les- und schreibbar, ausser via window.x). | + | |
- | console.log(`Nach Deklaration mit let : x = ${x}, window.x=${window.x}`); | + | |
- | const pi = 3; // Lokale Konstante, kann (und darf) nicht verändert werden. | + | |
- | | + | |
- | let x = 123; // Dieses x lebt nur in diesem if-block | + | |
- | | + | |
- | } | + | |
- | console.log(`Nach dem if-Block : x = ${x}, window.x=${window.x}`); | + | |
- | } | + | |
- | console.log(`Vor dem Funtionsaufruf : x = ${x}, window.x=${window.x}`); | + | |
- | hello(); | + | |
- | console.log(`Nach dem Funtionsaufruf : x = ${x}, window.x=${window.x}`); | + | |
- | </ | + | |