173 lines
3.9 KiB
JavaScript

"use strict";
// Scoping im Praxis
function calcAge(birthYear) {
const age = new Date().getFullYear() - birthYear;
function printAge() {
let output = `${firstName}, du bist ${age} Jahre alt, geboren den ${birthYear}`;
console.log(output);
if (birthYear >= 1981 && birthYear <= 1996) {
var millenial = true;
const firstName = "Steven";
output = "NEUE AUSGABE!";
const str = `Ah, du bist tausendjähriger, ${firstName}`;
console.log(str);
function add(a, b) {
return a + b;
}
}
// console.log(str);
console.log(millenial);
// console.log(add(2, 3));
console.log(output);
}
printAge();
return age;
}
const firstName = "David";
calcAge(1986);
// console.log(age);
// printAge();
// Hoisting und TDZ im Praxis
// Variablen
console.log(me);
var me = "David";
let job = "Entwickler";
const year = 1986;
// Functions
console.log(addDecl(2, 3));
// console.log(addExpr(2, 3));
console.log(addArrow);
// console.log(addArrow(2, 3));
function addDecl(a, b) {
return a + b;
}
const addExpr = function (a, b) {
return a + b;
};
var addArrow = (a, b) => a + b;
console.log(undefined);
if (!numProducts) deleteShoppingCart();
var numProducts = 10;
function deleteShoppingCart() {
console.log("Alle Produkte wurden entfernt!");
}
var x = 1;
let y = 2;
const z = 3;
console.log(x === window.x);
console.log(y === window.y);
console.log(z === window.z);
// Das Stichwort this im Praxis
console.log(this);
const calcAge = function (birthYear) {
console.log(new Date().getFullYear() - birthYear);
console.log(this);
};
calcAge(1991);
const calcAgeArrow = birthYear => {
console.log(new Date().getFullYear() - birthYear);
console.log(this);
};
calcAgeArrow(1980);
const david = {
year: 1991,
calcAge: function () {
console.log(this);
console.log(new Date().getFullYear() - this.year);
},
};
david.calcAge();
const matilda = {
year: 2017,
};
matilda.calcAge = david.calcAge;
matilda.calcAge();
const f = david.calcAge;
f();
// // Regulare Funktionen vs. Arrow Funktionen
// const david = {
// firstName: "David",
// year: 1986,
// calcAge: function () {
// // console.log(this);
// console.log(new Date().getFullYear() - this.year);
// const isMillenial = () => {
// console.log(this);
// console.log(this.year >= 1981 && this.year <= 1996);
// };
// isMillenial();
// },
// greet: () => {
// console.log(this);
// console.log(`Hello ${this.firstName}`);
// },
// };
// david.greet();
// david.calcAge();
// // Argument keyword
// const addExpr = function (a, b) {
// console.log(arguments);
// return a + b;
// };
// addExpr(2, 5);
// addExpr(2, 5, 8, 12);
// var addArrow = (a, b) => {
// console.log(arguments);
// return a + b;
// };
// addArrow(2, 5, 8);
// // Objekte vs. Primitive
// let age = 30;
// let oldAge = age;
// age = 31;
// console.log(age);
// console.log(oldAge);
// const me = {
// name: "David",
// age: 36,
// };
// const friend = me;
// friend.age = 27;
// console.log("Friend:", friend);
// console.log("Me", me);
// // Primitives vs. Objects im Praxis
// // Primitive types
// let lastName = "Williams";
// let oldLastName = lastName;
// lastName = "Davis";
// console.log(lastName, oldLastName);
// // Reference Typen
// const joanne = {
// firstName: "Joanne",
// lastName: "Williams",
// age: 27,
// };
// const marriedJoanne = joanne;
// marriedJoanne.lastName = "David";
// console.log("Before marriage:", joanne);
// console.log("After marriage: ", marriedJoanne);
// const joanne2 = {
// firstName: "Joanne",
// lastName: "Williams",
// age: 27,
// family: ["Alice", "Bob"],
// };
// const joanneCopy = Object.assign({}, joanne2);
// joanneCopy.lastName = "Davis";
// joanneCopy.family.push("Mary");
// joanneCopy.family.push("John");
// console.log("Before marriage:", joanne2);
// console.log("After marriage: ", joanneCopy);