Editing JavaScript 1 Einführung

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
'''Bitte macht das Scrimba Tutorial für JavaScript bis zur "Chrome-Extension" durch: https://scrimba.com/learn/learnjavascript.<br>
'''Bitte macht das <u>ganze</u> Scrimba Tutorial für JavaScript durch: https://scrimba.com/learn/learnjavascript.<br>
Die Inhalte unterhalb sollen dann nur mehr als kurze Wiederholung nach dem Video dienen ;)'''<br>
Die Inhalte unterhalb sollen dann nur mehr als kurze Wiederholung nach dem Video dienen ;)'''<br>


Line 10: Line 10:
*Aufgrund großer Beliebtheit hat sich Anwendungsbereich ausgeweitet
*Aufgrund großer Beliebtheit hat sich Anwendungsbereich ausgeweitet
*2009 erschien bspw Node.js => Plattform um mit JavaScript Serveranwendungen programmieren zu können
*2009 erschien bspw Node.js => Plattform um mit JavaScript Serveranwendungen programmieren zu können
*Später auch Entwicklungsumgebungen wie Electron oder NW.js => möglich, Desktop-Anwendungen zu erstellen
*Später auch Entwicklungsumgebungen wie Electronoder NW.js => möglich, Desktop-Anwendungen zu erstellen
*Browser-Anwendungen bleiben mit großem Abstand der häufigste Einsatzbereich von JS
*Browser-Anwendungen bleiben mit großem Abstand der häufigste Einsatzbereich von JS
*Läuft innerhalb einer Sandbox, dadurch kein Zugriff auf Funktionen des Betriebssystems, Hardware oder zu Netzwerken möglich
*Läuft innerhalb einer Sandbox, dadurch kein Zugriff auf Funktionen des Betriebssystems, Hardware oder zu Netzwerken möglich


====Entstehung====
====Entstehung====
Line 134: Line 135:


//normale Stringverkettung
//normale Stringverkettung
console.log("Meine Lieblingszahl ist " + favNumber + " , meine Liebelingsfarbe ist " + favColor + " , mein Lieblingstier ist " + favAnimal);
console.log("Meine Lieblingszahl ist " + favNumber + " , meine Liebelingsfarbe ist " + favColor + " , mein Lieblingstier ist " + favAnimal + " .");


//Verwendung von Template Literals
//Verwendung von Template Literals
Line 171: Line 172:
const mainContainer = document.querySelector('main');
const mainContainer = document.querySelector('main');


//Elemente, die sich während des Programmablaufs nicht verändern
//Elemente, die sich während des Programmablaufs nicht verwenden
const productCategories = ["Cars", "Bicycles", "Bikes", "Accessories"];
const productCategories = ["Cars", "Bicycles", "Bikes", "Accessories"];
</pre>
</pre>
Line 177: Line 178:
'''Vorteile von Konstanten:'''
'''Vorteile von Konstanten:'''
*Es zeigt anderen, die deinen Code lesen, dass du nicht vorhast, den Wert einer Variablen zu ändern.
*Es zeigt anderen, die deinen Code lesen, dass du nicht vorhast, den Wert einer Variablen zu ändern.
*Side Effects können vermieden werden (es kann kein neuer Werte zugewiesen werden, den wir nicht beabsichtigen.)
*Side Effects können vermieden werden (es kann kein neuer Werte zugewiesen werden, den wir nicht beabsichtigen)
 
 
====Scope in JavaScript====
Es gibt es drei Arten von Scope: '''Global Scope''', '''Function Scope''' und '''Block Scope'''
Der Scope definiert den Gültigkeitsbereich von Variablen.
 
"The Scope is a policy that manages the accessibility or visibility of variables."
 
=====Global Scope (var, let, const)=====
Jede Variable, die sich nicht in einer Funktion oder in einem Block (if-Statement, for-Schleife) deklariert wird. Ganz einfach gesagt, aller Variablen, die sich nicht in {} geschwungenen Klammern befinden. Auf Variablen, die im Global-Scope definiert werden, kann von überall aus dem Programm zugegriffen werden (und auch verändert werden). Ich kann auch innerhalb einer Funktion auf die “äußere” Variable zugreifen und sie verändern.
 
'''Beispiel Keksdose Part 1 🍪:'''<br>
Probiert das Beispiel einfach selber aus, dann wird das Ganze schnell klar für euch!<br>
Eine Keksdose für alle steht neben der Kaffeemaschine in unserem Büro, sie steht quasi '''global''' zur Verfügung.
 
<pre>
let cookieJar= ["Oreos", " Prinzenrolle", " Chocolate-Chip-Cookie", " Karamellkekse"];
 
function cookiesForAll() {
    console.log(`Ich habe Zugriff auf die Keksdose mit: ${cookieJar}`);
    console.log(`Ich kann mir auch Kekse herausnehmen 😄, ich esse alle ${cookieJar.pop()}`);
}
 
cookiesForAll();
 
//Die Keksdose hat ist weniger voll, wir haben die globale Variable in der Funktion "cookiesForAll()" verändert
console.log(`Die Keksdose ist jetzt weniger voll: ${cookieJar}`);
</pre>
 
=====Function Scope (var, let, const)=====
Trifft auf Variablen zu, die in einer Funktion definiert wurden. Man kann nur in dieser Funktion auf sie zugreifen und sie verändern.<br>
Außerhalb der Funktion hat man keinen Zugriff darauf.
 
'''Beispiel Keksdose Part 2 🍪:'''<br>
Die Keksdose gehört jetzt eurer Kollegin, die sie nicht mit euch teilen möchte. 😭<br>
Deshalb sperrt sie sie in ihrer Schreibtischlade ein ...
 
<pre>
function cookieDrawer() {
    //Die Kollegin kann innerhalb der Schreibtischlade auf die Keksdose zugreifen & auch etwas herausnehmen
    //Die Keksdose steht nur innerhalb der Funktion zur Verfügung
 
    let cookieJar = ["Oreos", " Prinzenrolle", " Chocolate-Chip-Cookie", " Karamelkekse"];
    console.log(`Innerhalb der Funktion hat sie Zugriff auf die Keksdose, in ihr befinden sich ${cookieJar}`);
    console.log(`Sie hat alle ${cookieJar.pop()} gegessen`);
    console.log(`In der Keksdose sind noch ${cookieJar}`);
}
 
cookieDrawer();
 
//Jetzt möchtet ihr einen Keks aus der Keksdose, leider könnt ihr nicht darauf zugreifen und auch nichts herausnehmen 😒,
//Hier bekommt ihr einen referenceError, da ihr keinen Zugriff auf die Variable von außerhalb der Funktion habt.
console.log(`Ich möchte etwas aus der Keksdose, darin befindet sich ${cookieJar}`);
</pre>
 
=====Block Scope (let, const)=====
Auf Variablen im Block Scope, also '''let & const''', kann nur in dem Block zugegriffen werden, indem sie definiert wurden (If-Statement, For-Loop, ...)
 
'''Beispiel Keksdose Part 3 🍪:'''<br>
In der Firma wurde eine neue Regel eingeführt, dass nur mehr "brave" MitarbeiterInnen Zugriff zur Keksdose haben, die anderen nicht .. 🤔
<pre>
let goodEmployee= true;
 
function goodOrBadEmployee() {
    if(goodEmployee){
        let cookieJar= ["Oreos", " Prinzenrolle", " Chocolate-Chip-Cookie", " Karamelkekse"];
        console.log(`Innerhalb dieses IF-Blocks habe ich Zugriff auf die Keksdose, in ihr befinden sich ${cookieJar}`);
        console.log(`Ich habe alle ${cookieJar.pop()} gegessen`);
 
    } else {
        console.log('Keine Kekse für dich');
        console.log(`Ich möchte aber Kekse aus der Keksdose 😭`);
    }
}
 
goodOrBadEmployee();
 
console.log(`Ich hätte gerne eine Keks, habe aber keinen Zugriff auf die ${cookieJar} 😢`);
</pre>
 
 
====let vs. var was ist der Unterschied?====
 
*Hier kommt wieder der Scope ins Spiel..
**der kleinste Gültigkeitsbereich von '''var''' liegt im '''Function''' Scope
**der kleinste Gültigkeitsbereich von '''let''' liegt im '''Block''' Scope
**verwendet man zum Beispiel für einen Schleifenzähler das '''var''' Keyword, kann man auch außerhalb der Schleife auf die Variable zugreifen.
**mit '''let''' ist das nicht möglich.
 
Ein Beispiel schadet sicher nicht, um das Ganze besser zu zeigen ;)
 
<pre>
const arr = [ 1, 2, 3, 4, 5, 6 ,7, 8 ]
 
function processArray (arr) {
    //der Schleifenzähler wird mit dem var Keyword definiert
    for(var i = 0; i < arr.length; i++) {
        console.log('Element ', arr[i]);
    }
    //auch außerhalb der Schleife habe ich Zugriff auf die Variable i
    console.log(`How many times did my loop run? ${i} times`);
}
 
processArray(arr);
</pre>
 
'''Wie sieht das Ganze mit '''let''' im Schleifenzähler aus?'''
<pre>
const arr = [ 1, 2, 3, 4, 5, 6 ,7, 8 ]
 
function processArray (arr) {
    //der Schleifenzähler wird mit dem let Keyword definiert
    for(let i = 0; i < arr.length; i++) {
        console.log('Element ', arr[i]);
    }
    //Hier habe ich keine Zugriff mehr auf die Variable i
    console.log(`How many times did my loop run? ${i} times`);
}
 
processArray(arr);
</pre>
 


====Datentypen ermitteln====
====Datentypen ermitteln====
*Mit '''typeof''' kann ausgegeben werden, um welchen Typ von Variable es sich handelt
*Mit '''typeof''' kann ausgegeben werden, um welchen Typ von Variable es sich handelt
*Befehl: '''document.write()''' schreibt Inhalte direkt in das Hauptfenster
*Ganze Zahlen und Fließkommazahlen behandelt JS gleich als '''number'''
*Ganze Zahlen und Fließkommazahlen behandelt JS gleich als '''number'''
*Typ einer Variable kann sich in JS im Laufe des Programms ändern
*Typ einer Variable kann sich in JS im Laufe des Programms ändern
Line 192: Line 316:
let boolean = true;
let boolean = true;
let noInitialisation;
let noInitialisation;
console.log("ganzeZahl: " + typeof integer);
 
console.log("kommazahl: " + typeof double);
document.write("ganzeZahl: " + typeof integer + "<br>");
console.log("buchstabe: " + typeof letter);
document.write("kommazahl: " + typeof double + "<br>");
console.log("wort: " + typeof word);
document.write("buchstabe: " + typeof letter + "<br>");
console.log("wahrheitswert: " + typeof boolean);
document.write("wort: " + typeof word + "<br>");
console.log("ohneInitialisierung: " + typeof noInitialisation);
document.write("wahrheitswert: " + typeof boolean + "<br>");
document.write("ohneInitialisierung: " + typeof noInitialisation + "<br>");
</pre>
</pre>


Line 210: Line 335:
<pre>
<pre>
let userInput = prompt("Gib eine Zahl ein:");
let userInput = prompt("Gib eine Zahl ein:");
console.log("Datentyp: " + typeof userInput);
document.write("Datentyp: " + typeof userInput + "<br>");
console.log(userInput + 3);
document.write(userInput + 3);
document.write("<br><br>");
userInput = Number(userInput);
userInput = Number(userInput);
console.log("Datentyp: " + typeof userInput);
document.write("Datentyp: " + typeof userInput + "<br>");
console.log(userInput + 3);
document.write(userInput + 3);
</pre>
</pre>


Line 263: Line 389:
<pre>
<pre>
let myVariable= 3;
let myVariable= 3;
myVariable = myVariable * 2;
myVariable = meineVariable * 2;
console.log(myVariable);
document.write(myVariable + "<br>");
myVariable = 3;
myVariable = 3;
myVariable *= 2;
myVariable *= 2;
console.log("Kurzschreibweise: " + myVariable);
document.write("Kurzschreibweise: " + myVariable + "<br>");
myVariable = 3;
myVariable = 3;
myVariable = myVariable + 5;
myVariable = myVariable + 5;
console.log(myVariable);
document.write(myVariable + "<br>");
myVariable = 3;
myVariable = 3;
myVariable += 5;
myVariable += 5;
console.log("Kurzschreibweise: " + myVariable);
document.write("Kurzschreibweise: " + myVariable + "<br>");
</pre>
</pre>


====if-Abfrage====
====if-Abfrage====
Line 319: Line 446:
let userInput = Number(prompt("Was ist das Ergebnis aus 3 + 2?"));
let userInput = Number(prompt("Was ist das Ergebnis aus 3 + 2?"));
if(userInput === 5) {
if(userInput === 5) {
     console.log("Richtige Lösung!");
     document.write("Richtige Lösung!");
}  
}  
if(userInput < 5) {
if(userInput < 5) {
     console.log("Wert ist zu klein");
     document.write("Wert ist zu klein<br>");
} else if(userInput > 5) {
} else if(userInput > 5) {
     console.log("Wert ist zu groß");
     document.write("Wert ist zu groß<br>");
}
}
if(userInput !== 5) {
if(userInput !== 5) {
     console.log("Wert ist falsch!");
     document.write("Wert ist falsch!");
}
}


Line 335: Line 462:
let userInput2 = Number(prompt("Ergebnis aus 2 * 3?"));
let userInput2 = Number(prompt("Ergebnis aus 2 * 3?"));
if(userInput1 === 5 || userInput2 === 6) {
if(userInput1 === 5 || userInput2 === 6) {
     console.log("Mindestens eine Antwort ist richtig?");
     document.write("Mindestens eine Antwort ist richtig?");
} else {
} else {
     console.log("Beide Antworten sind falsch");
     document.write("Beide Antworten sind falsch");
}
}
</pre>
</pre>


====Arrays====
====Arrays====
Line 415: Line 543:
myArray[2] = ["Reindling", 6.99, false];
myArray[2] = ["Reindling", 6.99, false];
myArray[3] = ["Linzer Torte", 13.99, true];
myArray[3] = ["Linzer Torte", 13.99, true];
myArray[4] = ["Windbeutel", 0.80, false];
myArray[4] = ["Windbeute", 0.80, false];
// An bestimmte Stelle zugreifen
// An bestimmte Stelle zugreifen
console.log(myArray[0][1]);
document.write(myArray[0][1] + "<br><br>");
console.log(myArray[2][2]);
document.write(myArray[2][2] + "<br><br>");
console.log(myArray[4][0]);
document.write(myArray[4][0] + "<br><br>");
console.log(myArray);
document.write(myArray);
</pre>
</pre>


Line 429: Line 557:
let input = Number(prompt("Bis zu welchem Wert möchten sie zählen?"));
let input = Number(prompt("Bis zu welchem Wert möchten sie zählen?"));
let i = 1;
let i = 1;
while(i <= input) {
while(i <= userInput) {
     console.log(i);
     document.write(i + "<br>");
     i++;
     i++;
}
}
Line 457: Line 585:


for (let i = 1; i <= input; i++) {
for (let i = 1; i <= input; i++) {
     console.log(i);
     document.write(i + "<br>");
}
}
</pre>
</pre>
Line 468: Line 596:


for (let value of arr) {
for (let value of arr) {
     console.log(value);
     document.write(value + "<br>");
}
}
</pre>
</pre>
Line 501: Line 629:
let name;
let name;
greeting();
greeting();
console.log("Ihr Name: " + name);
document.write("Ihr Name: " + name);
</pre>
</pre>


Line 519: Line 647:
}
}
let user = prompt("Gib deinen Namen ein:");
let user = prompt("Gib deinen Namen ein:");
greeting(user);
begruessung(user);




Line 525: Line 653:
"use strict";
"use strict";
function greeting(name, age) {
function greeting(name, age) {
     console.log("Name: " + name);
     document.write("Name: " + name + "<br>");
     console.log("Alter: " + age);
     document.write("Alter: " + age);
}
}
let user = prompt("Gib deinen Namen ein:");
let user= prompt("Gib deinen Namen ein:");
let age = prompt("Gib dein Alter ein");
let age= prompt("Gib dein Alter ein");
greeting(user, age);
begruessung(user, age);
</pre>
</pre>


Line 547: Line 675:
}
}
let value = sample(3);
let value = sample(3);
console.log(value);
alert(value);
</pre>
 
===Scope in JavaScript===
Es gibt es drei Arten von Scope: '''Global Scope''', '''Function Scope''' und '''Block Scope'''
Der Scope definiert den Gültigkeitsbereich von Variablen.
 
"The Scope is a policy that manages the accessibility or visibility of variables."
 
=====Global Scope (var, let, const)=====
Jede Variable, die nicht in einer Funktion oder in einem Block (if-Statement, for-Schleife) deklariert wird. Ganz einfach gesagt, alle Variablen, die sich nicht in {} geschwungenen Klammern befinden. Auf Variablen, die im Global-Scope definiert werden, kann von überall aus dem Programm zugegriffen werden (und auch verändert werden). Ich kann auch innerhalb einer Funktion auf die “äußere” Variable zugreifen und sie verändern.
 
'''Beispiel Keksdose Part 1 🍪:'''<br>
Probiert das Beispiel einfach selber aus, dann wird das Ganze schnell klar für euch!<br>
Eine Keksdose für alle steht neben der Kaffeemaschine in unserem Büro, sie steht quasi '''global''' zur Verfügung.
 
<pre>
let cookieJar = ["Oreos", " Prinzenrolle", " Chocolate-Chip-Cookie", " Karamellkekse"];
 
function cookiesForAll() {
    console.log(`Ich habe Zugriff auf die Keksdose mit: ${cookieJar}`);
    console.log(`Ich kann mir auch Kekse herausnehmen 😄, ich esse alle ${cookieJar.pop()}`);
}
 
cookiesForAll();
 
//Die Keksdose hat ist weniger voll, wir haben die globale Variable in der Funktion "cookiesForAll()" verändert
console.log(`Die Keksdose ist jetzt weniger voll: ${cookieJar}`);
</pre>
 
=====Function Scope (var, let, const)=====
Trifft auf Variablen zu, die in einer Funktion definiert wurden. Man kann nur in dieser Funktion auf sie zugreifen und sie verändern.<br>
Außerhalb der Funktion hat man keinen Zugriff darauf.
 
'''Beispiel Keksdose Part 2 🍪:'''<br>
Die Keksdose gehört jetzt eurer Kollegin, die sie nicht mit euch teilen möchte. 😭<br>
Deshalb sperrt sie sie in ihrer Schreibtischlade ein ...
 
<pre>
function cookieDrawer() {
    //Die Kollegin kann innerhalb der Schreibtischlade auf die Keksdose zugreifen & auch etwas herausnehmen
    //Die Keksdose steht nur innerhalb der Funktion zur Verfügung
 
    let cookieJar = ["Oreos", " Prinzenrolle", " Chocolate-Chip-Cookie", " Karamelkekse"];
    console.log(`Innerhalb der Funktion hat sie Zugriff auf die Keksdose, in ihr befinden sich ${cookieJar}`);
    console.log(`Sie hat alle ${cookieJar.pop()} gegessen`);
    console.log(`In der Keksdose sind noch ${cookieJar}`);
}
 
cookieDrawer();
 
//Jetzt möchtet ihr einen Keks aus der Keksdose, leider könnt ihr nicht darauf zugreifen und auch nichts herausnehmen 😒,
//Hier bekommt ihr einen referenceError, da ihr keinen Zugriff auf die Variable von außerhalb der Funktion habt.
console.log(`Ich möchte etwas aus der Keksdose, darin befindet sich ${cookieJar}`);
</pre>
 
=====Block Scope (let, const)=====
Auf Variablen im Block Scope, also '''let & const''', kann nur in dem Block zugegriffen werden, indem sie definiert wurden (If-Statement, For-Loop, ...)
 
'''Beispiel Keksdose Part 3 🍪:'''<br>
In der Firma wurde eine neue Regel eingeführt, dass nur mehr "brave" MitarbeiterInnen Zugriff zur Keksdose haben, die anderen nicht .. 🤔
<pre>
let goodEmployee = true;
 
function goodOrBadEmployee() {
    if(goodEmployee){
        let cookieJar = ["Oreos", " Prinzenrolle", " Chocolate-Chip-Cookie", " Karamelkekse"];
        console.log(`Innerhalb dieses IF-Blocks habe ich Zugriff auf die Keksdose, in ihr befinden sich ${cookieJar}`);
        console.log(`Ich habe alle ${cookieJar.pop()} gegessen`);
 
    } else {
        console.log('Keine Kekse für dich');
        console.log(`Ich möchte aber Kekse aus der Keksdose 😭`);
    }
}
 
goodOrBadEmployee();
 
console.log(`Ich hätte gerne eine Keks, habe aber keinen Zugriff auf die ${cookieJar} 😢`);
</pre>
 
====let vs. var was ist der Unterschied?====
 
*Hier kommt wieder der Scope ins Spiel..
**der kleinste Gültigkeitsbereich von '''var''' liegt im '''Function''' Scope
**der kleinste Gültigkeitsbereich von '''let''' liegt im '''Block''' Scope
**verwendet man zum Beispiel für einen Schleifenzähler das '''var''' Keyword, kann man auch außerhalb der Schleife auf die Variable zugreifen.
**mit '''let''' ist das nicht möglich.
 
Ein Beispiel schadet sicher nicht, um das Ganze besser zu zeigen ;)
 
<pre>
const arr = [ 1, 2, 3, 4, 5, 6 ,7, 8 ]
 
function processArray (arr) {
    //der Schleifenzähler wird mit dem var Keyword definiert
    for(var i = 0; i < arr.length; i++) {
        console.log('Element ', arr[i]);
    }
    //auch außerhalb der Schleife habe ich Zugriff auf die Variable i
    console.log(`How many times did my loop run? ${i} times`);
}
 
processArray(arr);
</pre>
 
'''Wie sieht das Ganze mit '''let''' im Schleifenzähler aus?'''
<pre>
const arr = [ 1, 2, 3, 4, 5, 6 ,7, 8 ]
 
function processArray (arr) {
    //der Schleifenzähler wird mit dem let Keyword definiert
    for(let i = 0; i < arr.length; i++) {
        console.log('Element ', arr[i]);
    }
    //Hier habe ich keine Zugriff mehr auf die Variable i
    console.log(`How many times did my loop run? ${i} times`);
}
 
processArray(arr);
</pre>
</pre>

Please note that all contributions to Coders.Bay Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see CB Wiki:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)