This commit is contained in:
70
06_js-debug/uebungen/u01_bibverwaltung/index.html
Normal file
70
06_js-debug/uebungen/u01_bibverwaltung/index.html
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Exercise: Nested If-Statements</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Exercise: Nested If-Statements</h1>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const isLibraryUpdating = false;
|
||||||
|
const isUserLoggedIn = true;
|
||||||
|
const hasLibrarianPermissions = true;
|
||||||
|
const hasBookEditCapability = false;
|
||||||
|
const hasBookAccess = false;
|
||||||
|
|
||||||
|
const bookCollection = [
|
||||||
|
{
|
||||||
|
title: 'Book A',
|
||||||
|
price: 150,
|
||||||
|
quantity: 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Book B',
|
||||||
|
price: 250,
|
||||||
|
quantity: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Book C',
|
||||||
|
price: 350,
|
||||||
|
quantity: 10,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
function handleLibraryOperations() {
|
||||||
|
if (!isLibraryUpdating) {
|
||||||
|
if (isUserLoggedIn) {
|
||||||
|
if (hasLibrarianPermissions || (hasBookEditCapability && hasBookAccess)) {
|
||||||
|
bookCollection.forEach((book) => {
|
||||||
|
console.log(`Book Title: ${book.title}`);
|
||||||
|
if (book.price > 200) {
|
||||||
|
console.log('Book price is greater than 200.');
|
||||||
|
} else {
|
||||||
|
console.log('Book price is less than or equal to 200.');
|
||||||
|
}
|
||||||
|
if (book.quantity > 0) {
|
||||||
|
console.log('Book is available.');
|
||||||
|
} else {
|
||||||
|
console.log('Book is unavailable.');
|
||||||
|
}
|
||||||
|
console.log('---');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('Insufficient rights to manage books.');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('Please log in to manage books.');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('Library system is currently updating.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
handleLibraryOperations();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
70
06_js-debug/uebungen/u02_extraction/index.html
Normal file
70
06_js-debug/uebungen/u02_extraction/index.html
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Exercise: Nested If-Statements</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Exercise: Nested If-Statements</h1>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const isLibraryUpdating = false;
|
||||||
|
const isUserLoggedIn = true;
|
||||||
|
const hasLibrarianPermissions = true;
|
||||||
|
const hasBookEditCapability = false;
|
||||||
|
const hasBookAccess = false;
|
||||||
|
|
||||||
|
const bookCollection = [
|
||||||
|
{
|
||||||
|
title: 'Book A',
|
||||||
|
price: 150,
|
||||||
|
quantity: 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Book B',
|
||||||
|
price: 250,
|
||||||
|
quantity: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Book C',
|
||||||
|
price: 350,
|
||||||
|
quantity: 10,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
function handleLibraryOperations() {
|
||||||
|
if (!isLibraryUpdating) {
|
||||||
|
if (isUserLoggedIn) {
|
||||||
|
if (hasLibrarianPermissions || (hasBookEditCapability && hasBookAccess)) {
|
||||||
|
bookCollection.forEach((book) => {
|
||||||
|
console.log(`Book Title: ${book.title}`);
|
||||||
|
if (book.price > 200) {
|
||||||
|
console.log('Book price is greater than 200.');
|
||||||
|
} else {
|
||||||
|
console.log('Book price is less than or equal to 200.');
|
||||||
|
}
|
||||||
|
if (book.quantity > 0) {
|
||||||
|
console.log('Book is available.');
|
||||||
|
} else {
|
||||||
|
console.log('Book is unavailable.');
|
||||||
|
}
|
||||||
|
console.log('---');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('Insufficient rights to manage books.');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('Please log in to manage books.');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('Library system is currently updating.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
handleLibraryOperations();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
49
06_js-debug/uebungen/u03_dry/index.html
Normal file
49
06_js-debug/uebungen/u03_dry/index.html
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Exercise: Don't Repeat Yourself (DRY)</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Exercise: Don't Repeat Yourself (DRY)</h1>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function logWeatherReports() {
|
||||||
|
// Weather Report 1
|
||||||
|
const city1 = 'New York';
|
||||||
|
const temperature1 = 85;
|
||||||
|
const humidity1 = 70;
|
||||||
|
const description1 = 'Sunny';
|
||||||
|
const windSpeed1 = 10;
|
||||||
|
console.log(
|
||||||
|
`Weather in ${city1}: ${temperature1}°F, ${humidity1}% humidity, ${description1}, Wind Speed: ${windSpeed1} mph`
|
||||||
|
);
|
||||||
|
|
||||||
|
// Weather Report 2
|
||||||
|
const city2 = 'Los Angeles';
|
||||||
|
const temperature2 = 75;
|
||||||
|
const humidity2 = 60;
|
||||||
|
const description2 = 'Partly Cloudy';
|
||||||
|
const windSpeed2 = 7;
|
||||||
|
console.log(
|
||||||
|
`Weather in ${city2}: ${temperature2}°F, ${humidity2}% humidity, ${description2}, Wind Speed: ${windSpeed2} mph`
|
||||||
|
);
|
||||||
|
|
||||||
|
// Weather Report 3
|
||||||
|
const city3 = 'Chicago';
|
||||||
|
const temperature3 = 70;
|
||||||
|
const humidity3 = 65;
|
||||||
|
const description3 = 'Rainy';
|
||||||
|
const windSpeed3 = 12;
|
||||||
|
console.log(
|
||||||
|
`Weather in ${city3}: ${temperature3}°F, ${humidity3}% humidity, ${description3}, Wind Speed: ${windSpeed3} mph`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
logWeatherReports();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
246
06_js-debug/uebungen/u04_dry-benutzerzugang/index.html
Normal file
246
06_js-debug/uebungen/u04_dry-benutzerzugang/index.html
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Advanced If-Else Statements (Enhanced Nesting)</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Advanced If-Else Statements (Enhanced Nesting)</h1>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
let isSystemUnderMaintenance = false;
|
||||||
|
let isUserAuthenticated = true;
|
||||||
|
let userRole = 'editor'; // Possible roles: 'admin', 'editor', 'viewer'
|
||||||
|
let hasPremiumAccess = false;
|
||||||
|
let hasTwoFactorAuth = true;
|
||||||
|
let accountStatus = 'active'; // Possible statuses: 'active', 'suspended', 'closed'
|
||||||
|
let userDepartment = 'marketing'; // Possible departments: 'engineering', 'marketing', 'sales'
|
||||||
|
|
||||||
|
const userActions = [
|
||||||
|
{
|
||||||
|
action: 'viewDashboard',
|
||||||
|
requiresAdmin: false,
|
||||||
|
requiresPremium: false,
|
||||||
|
allowedDepartments: ['engineering', 'marketing', 'sales'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
action: 'editContent',
|
||||||
|
requiresAdmin: false,
|
||||||
|
requiresPremium: true,
|
||||||
|
allowedDepartments: ['marketing'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
action: 'manageUsers',
|
||||||
|
requiresAdmin: true,
|
||||||
|
requiresPremium: false,
|
||||||
|
allowedDepartments: ['engineering'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
action: 'accessAnalytics',
|
||||||
|
requiresAdmin: true,
|
||||||
|
requiresPremium: true,
|
||||||
|
allowedDepartments: ['sales', 'marketing'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
action: 'deployCode',
|
||||||
|
requiresAdmin: true,
|
||||||
|
requiresPremium: true,
|
||||||
|
allowedDepartments: ['engineering'],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
function manageUserAccess() {
|
||||||
|
if (isSystemUnderMaintenance) {
|
||||||
|
console.log('System is under maintenance. Please try again later.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isUserAuthenticated) {
|
||||||
|
console.log('User is not authenticated. Redirecting to login page.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (accountStatus !== 'active') {
|
||||||
|
if (accountStatus === 'suspended') {
|
||||||
|
console.log('Account is suspended. Contact support.');
|
||||||
|
} else if (accountStatus === 'closed') {
|
||||||
|
console.log('Account is closed. Access denied.');
|
||||||
|
} else {
|
||||||
|
console.log('Unknown account status.');
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasTwoFactorAuth) {
|
||||||
|
console.log('Two-Factor Authentication is required for access.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (userRole === 'admin') {
|
||||||
|
if (userDepartment === 'engineering') {
|
||||||
|
userActions.forEach((action) => {
|
||||||
|
if (action.allowedDepartments.includes(userDepartment)) {
|
||||||
|
console.log(`Admin (${userDepartment}) accessing: ${action.action}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (userDepartment === 'marketing') {
|
||||||
|
userActions.forEach((action) => {
|
||||||
|
if (action.allowedDepartments.includes(userDepartment)) {
|
||||||
|
console.log(`Admin (${userDepartment}) accessing: ${action.action}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (userDepartment === 'sales') {
|
||||||
|
userActions.forEach((action) => {
|
||||||
|
if (action.allowedDepartments.includes(userDepartment)) {
|
||||||
|
console.log(`Admin (${userDepartment}) accessing: ${action.action}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('Unknown department. Access denied.');
|
||||||
|
}
|
||||||
|
} else if (userRole === 'editor') {
|
||||||
|
if (!hasPremiumAccess) {
|
||||||
|
console.log('Premium access required to edit content.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (userDepartment === 'marketing') {
|
||||||
|
userActions.forEach((action) => {
|
||||||
|
if (action.requiresPremium && action.allowedDepartments.includes(userDepartment)) {
|
||||||
|
console.log(`Editor (${userDepartment}) accessing: ${action.action}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('Editors are only allowed in the Marketing department.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else if (userRole === 'viewer') {
|
||||||
|
if (userDepartment === 'sales') {
|
||||||
|
userActions.forEach((action) => {
|
||||||
|
if (
|
||||||
|
!action.requiresAdmin &&
|
||||||
|
!action.requiresPremium &&
|
||||||
|
action.allowedDepartments.includes(userDepartment)
|
||||||
|
) {
|
||||||
|
console.log(`Viewer (${userDepartment}) accessing: ${action.action}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('Viewers are only allowed in the Sales department.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('Unknown user role. Access denied.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===== TEST CASES =====
|
||||||
|
|
||||||
|
// Test Case 1: System Under Maintenance
|
||||||
|
console.warn('Test Case 1: System Under Maintenance');
|
||||||
|
isSystemUnderMaintenance = true;
|
||||||
|
manageUserAccess(); // => "System is under maintenance. Please try again later."
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 2: User Not Authenticated
|
||||||
|
console.warn('Test Case 2: User Not Authenticated');
|
||||||
|
isSystemUnderMaintenance = false;
|
||||||
|
isUserAuthenticated = false;
|
||||||
|
manageUserAccess(); // => "User is not authenticated. Redirecting to login page."
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 3: Account Suspended
|
||||||
|
console.warn('Test Case 3: Account Suspended');
|
||||||
|
hasTwoFactorAuth = false;
|
||||||
|
accountStatus = 'suspended';
|
||||||
|
manageUserAccess(); // => "Account is suspended. Contact support."
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 4: Missing Two-Factor Authentication
|
||||||
|
console.warn('Test Case 4: Missing Two-Factor Authentication');
|
||||||
|
hasTwoFactorAuth = false;
|
||||||
|
accountStatus = 'active';
|
||||||
|
manageUserAccess(); // => "Two-Factor Authentication is required for access."
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 5: Admin Access in Marketing Department
|
||||||
|
console.warn('Test Case 5: Admin Access in Marketing Department');
|
||||||
|
userRole = 'admin';
|
||||||
|
userDepartment = 'marketing';
|
||||||
|
manageUserAccess();
|
||||||
|
// Expected Output:
|
||||||
|
// "Admin (marketing) accessing: viewDashboard"
|
||||||
|
// "Admin (marketing) accessing: editContent"
|
||||||
|
// "Admin (marketing) accessing: accessAnalytics"
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 6: Editor Without Premium Access
|
||||||
|
console.warn('Test Case 6: Editor Without Premium Access');
|
||||||
|
userRole = 'editor';
|
||||||
|
hasPremiumAccess = false;
|
||||||
|
manageUserAccess(); // => "Premium access required to edit content."
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 7: Editor With Premium Access in Marketing Department
|
||||||
|
console.warn('Test Case 7: Editor With Premium Access in Marketing Department');
|
||||||
|
hasPremiumAccess = true;
|
||||||
|
manageUserAccess();
|
||||||
|
// Expected Output:
|
||||||
|
// "Editor (marketing) accessing: editContent"
|
||||||
|
// "Editor (marketing) accessing: accessAnalytics"
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 8: Viewer Access in Sales Department
|
||||||
|
console.warn('Test Case 8: Viewer Access in Sales Department');
|
||||||
|
userRole = 'viewer';
|
||||||
|
userDepartment = 'sales';
|
||||||
|
manageUserAccess(); // => "Viewer (sales) accessing: viewDashboard"
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 9: Unknown User Role
|
||||||
|
console.warn('Test Case 9: Unknown User Role');
|
||||||
|
userRole = 'guest';
|
||||||
|
manageUserAccess(); // => "Unknown user role. Access denied."
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 10: Viewer Access in Marketing Department
|
||||||
|
console.warn('Test Case 10: Viewer Access in Marketing Department');
|
||||||
|
userRole = 'viewer';
|
||||||
|
userDepartment = 'marketing';
|
||||||
|
manageUserAccess(); // => "Viewers are only allowed in the Sales department."
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 11: Admin Access in Engineering Department
|
||||||
|
console.warn('Test Case 11: Admin Access in Engineering Department');
|
||||||
|
userRole = 'admin';
|
||||||
|
userDepartment = 'engineering';
|
||||||
|
manageUserAccess();
|
||||||
|
// Expected Output:
|
||||||
|
// "Admin (engineering) accessing: viewDashboard"
|
||||||
|
// "Admin (engineering) accessing: manageUsers"
|
||||||
|
// "Admin (engineering) accessing: deployCode"
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// Test Case 12: Editor With Premium Access in Engineering Department
|
||||||
|
console.warn('Test Case 12: Editor With Premium Access in Engineering Department');
|
||||||
|
userRole = 'editor';
|
||||||
|
hasPremiumAccess = true;
|
||||||
|
userDepartment = 'engineering';
|
||||||
|
manageUserAccess(); // => "Editors are only allowed in the Marketing department."
|
||||||
|
resetVariables();
|
||||||
|
|
||||||
|
// ===== HELPER FUNCTION =====
|
||||||
|
function resetVariables() {
|
||||||
|
isSystemUnderMaintenance = false;
|
||||||
|
isUserAuthenticated = true;
|
||||||
|
userRole = 'editor';
|
||||||
|
hasPremiumAccess = false;
|
||||||
|
hasTwoFactorAuth = true;
|
||||||
|
accountStatus = 'active';
|
||||||
|
userDepartment = 'marketing';
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
27
06_js-debug/uebungen/u05_error-format-date/index.html
Normal file
27
06_js-debug/uebungen/u05_error-format-date/index.html
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 05: FormatDate Fehler</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Übung 05: FormatDate Fehler</h1>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
function formatDate(date) {
|
||||||
|
const options = { year: 'numeric', month: 'long', day: 'numeric' };
|
||||||
|
formatedDate = date.toLocaleDateString(undefined, options);
|
||||||
|
return formattedDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(formatDate(new Date('2023-05-31'))); // => 'May 31, 2023'
|
||||||
|
console.log(formatDate(new Date('2024-01-01'))); // => 'January 1, 2024'
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
51
06_js-debug/uebungen/u06_error-benutzer/index.html
Normal file
51
06_js-debug/uebungen/u06_error-benutzer/index.html
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 6: Benutzer erstellen</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Übung 6: Benutzer erstellen</h1>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function createUser(name, email, age {
|
||||||
|
return {
|
||||||
|
name: name,
|
||||||
|
email: email,
|
||||||
|
age: age,
|
||||||
|
greet: () => {
|
||||||
|
console.log("Hello, " + name + "!");
|
||||||
|
},
|
||||||
|
updateEmail(newEmail) {
|
||||||
|
email = newEmail;
|
||||||
|
console.log("Email updated to " + newEmail);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
const users = [
|
||||||
|
createUser("Alice", "alice@example.com", 30),
|
||||||
|
createUser("Bob", "bob@example.com", 25),
|
||||||
|
createUser("Charlie", "charlie@example.com", 35),
|
||||||
|
];
|
||||||
|
|
||||||
|
users.forEach(user => {
|
||||||
|
user.greet();
|
||||||
|
user.updateEmail("new_" + user.email);
|
||||||
|
});
|
||||||
|
|
||||||
|
function calculateTotal(a, b, c) {
|
||||||
|
return a + b + c;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Total:", calculateTotal(10, 20 30));
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
37
06_js-debug/uebungen/u07_check-temperature/index.html
Normal file
37
06_js-debug/uebungen/u07_check-temperature/index.html
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 7: checkTemperature Fehler</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Übung 7: checkTemperature Fehler</h1>
|
||||||
|
<p>Versuche, den Code auszuführen, den Fehler zu identifizieren und ihn zu beheben.</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
|
||||||
|
function checkTemperature(temperature) {
|
||||||
|
const threshold = 30;
|
||||||
|
const message;
|
||||||
|
|
||||||
|
if (temperature > threshold) {
|
||||||
|
message = "It's too hot outside!";
|
||||||
|
} else {
|
||||||
|
message = "The temperature is just right.";
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
checkTemperature(25); // => "The temperature is just right."
|
||||||
|
checkTemperature(35); // => "It's too hot outside!"
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
57
06_js-debug/uebungen/u08_benutzer-anzeigen/index.html
Normal file
57
06_js-debug/uebungen/u08_benutzer-anzeigen/index.html
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 8: Benutzer anzeigen</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Übung 8: Benutzer anzeigen</h1>
|
||||||
|
<p>
|
||||||
|
Der folgende Code enthält mehrere Referenzfehler, die über verschiedene Teile des Codes verteilt sind. Deine
|
||||||
|
Aufgabe ist es, alle Referenzfehler zu identifizieren und zu beheben, um sicherzustellen, dass der Code
|
||||||
|
korrekt läuft.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const userName = 'Emily';
|
||||||
|
|
||||||
|
function displayUserInfo() {
|
||||||
|
console.log('User Name: ' + user);
|
||||||
|
console.log('User Age: ' + age);
|
||||||
|
}
|
||||||
|
|
||||||
|
displayUserInfo();
|
||||||
|
|
||||||
|
function updateEmail(newEmail) {
|
||||||
|
userEmail = newEmail;
|
||||||
|
console.log('Email updated to ' + userEmail);
|
||||||
|
}
|
||||||
|
|
||||||
|
updateEmail('emily@example.com');
|
||||||
|
|
||||||
|
function calculateBMI(weight, height) {
|
||||||
|
return weight / (height * height);
|
||||||
|
}
|
||||||
|
|
||||||
|
const bmi = calculateBmi(70, 1.75);
|
||||||
|
console.log('BMI:', bmi);
|
||||||
|
|
||||||
|
function greetUser(name) {
|
||||||
|
if (name === 'Emily') {
|
||||||
|
console.log('Welcome back, ' + name + '!');
|
||||||
|
} else {
|
||||||
|
console.log('Hello, ' + Name + '!');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
greetuser('Michael');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
32
06_js-debug/uebungen/u09_parse-user-data/index.html
Normal file
32
06_js-debug/uebungen/u09_parse-user-data/index.html
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Übung 9: parseUserData Fehler</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Übung 9: parseUserData Fehler</h1>
|
||||||
|
<p>Die Kommentare zeigen das erwartete Ergebnis.</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function parseUserData(jsonString) {
|
||||||
|
try {
|
||||||
|
const userData = JSON.parse(jsonString);
|
||||||
|
return `User: ${userData.name}, Age: ${userData.age}`;
|
||||||
|
} catch (error) {
|
||||||
|
return `Error: ${error.message}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(parseUserData('{"name": "Alice", "age": 30}')); // => 'User: Alice, Age: 30'
|
||||||
|
console.log(parseUserData('{"name": "Bob", "age": "thirty"}')); // => 'Error: Invalid data types'
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
40
06_js-debug/uebungen/u10_einkaufspreis/index.js
Normal file
40
06_js-debug/uebungen/u10_einkaufspreis/index.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
function calculateTotalPrice(items) {
|
||||||
|
let total = 0;
|
||||||
|
items.forEach((item) => {
|
||||||
|
total += item.price;
|
||||||
|
});
|
||||||
|
return total.toFixed(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
const shoppingCart = [
|
||||||
|
{ name: 'Laptop', price: 999.99 },
|
||||||
|
{ name: 'Smartphone', price: '599.99' },
|
||||||
|
{ name: 'Headphones', cost: 199.99 },
|
||||||
|
];
|
||||||
|
|
||||||
|
const totalPrice = calculateTotalPrice(shoppingCart);
|
||||||
|
console.log('Total Price:', totalPrice);
|
||||||
|
|
||||||
|
function displayUserProfile(user) {
|
||||||
|
console.log(`Name: ${user.name}`);
|
||||||
|
console.log(`Age: ${user.age}`);
|
||||||
|
console.log(`Email: ${user.email.toLowerCase()}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const userProfile = {
|
||||||
|
name: 'Sarah',
|
||||||
|
age: 'twenty-five',
|
||||||
|
email: 'SARAH@EXAMPLE.COM',
|
||||||
|
};
|
||||||
|
|
||||||
|
displayUserProfile(userProfile);
|
||||||
|
|
||||||
|
function getFirstItemName(items) {
|
||||||
|
return items[0].name.toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('First Item:', getFirstItemName(shoppingCart)); // => LAPTOP
|
||||||
|
|
||||||
|
const numberList = '1,2,3,4,5';
|
||||||
|
const sum = numberList.reduce((acc, num) => acc + Number(num), 0);
|
||||||
|
console.log('Sum:', sum); // => 15
|
||||||
BIN
06_js-debug/uebungen/uebungen-01-10-js-debug.zip
Normal file
BIN
06_js-debug/uebungen/uebungen-01-10-js-debug.zip
Normal file
Binary file not shown.
@@ -5,6 +5,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Type Error</title>
|
<title>Type Error</title>
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<script src="04_type-error.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main>
|
<main>
|
||||||
|
|||||||
12
06_js-debug/unterricht/tag46/04_error-types/04_type-error.js
Normal file
12
06_js-debug/unterricht/tag46/04_error-types/04_type-error.js
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
"use strict";
|
||||||
|
{
|
||||||
|
function greet(name) {
|
||||||
|
console.log('Hello, ' + name);
|
||||||
|
}
|
||||||
|
function displayCar(car) {
|
||||||
|
console.log('Brand: ' + car.brand + ', Model: ' + car.model);
|
||||||
|
}
|
||||||
|
const myCar = { name: 'Toyota', model: 'Camry' };
|
||||||
|
greet(42); // => TypeError: Argument of type 'number' is not assignable to parameter of type 'string'
|
||||||
|
displayCar(myCar); // => TypeError: Argument of type '{ name: string; model: string; }' is not assignable to parameter of type 'Car'. Property 'brand' is missing in type '{ name: string; model: string; }' but required in type 'Car'.
|
||||||
|
}
|
||||||
23
06_js-debug/unterricht/tag46/04_error-types/04_type-error.ts
Normal file
23
06_js-debug/unterricht/tag46/04_error-types/04_type-error.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
interface Car {
|
||||||
|
brand: string;
|
||||||
|
model: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function greet(name: string) {
|
||||||
|
console.log('Hello, ' + name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayCar(car: Car) {
|
||||||
|
console.log('Brand: ' + car.brand + ', Model: ' + car.model);
|
||||||
|
}
|
||||||
|
|
||||||
|
const myCar = { name: 'Toyota', model: 'Camry' };
|
||||||
|
|
||||||
|
// greet(42); // => TypeError: Argument of type 'number' is not assignable to parameter of type 'string'
|
||||||
|
|
||||||
|
greet('11');
|
||||||
|
|
||||||
|
// displayCar(myCar); // => TypeError: Argument of type '{ name: string; model: string; }' is not assignable to parameter of type 'Car'. Property 'brand' is missing in type '{ name: string; model: string; }' but required in type 'Car'.
|
||||||
|
displayCar({ brand: 'Honda', model: 'E' });
|
||||||
|
}
|
||||||
390
06_js-debug/unterricht/tag46/04_error-types/package-lock.json
generated
Normal file
390
06_js-debug/unterricht/tag46/04_error-types/package-lock.json
generated
Normal file
@@ -0,0 +1,390 @@
|
|||||||
|
{
|
||||||
|
"name": "04_error-types",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "04_error-types",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"devDependencies": {
|
||||||
|
"typescript": "^7.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-aix-ppc64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"aix"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-darwin-arm64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-darwin-x64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-freebsd-arm64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-freebsd-x64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-linux-arm": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-linux-arm64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-linux-loong64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==",
|
||||||
|
"cpu": [
|
||||||
|
"loong64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-linux-mips64el": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==",
|
||||||
|
"cpu": [
|
||||||
|
"mips64el"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-linux-ppc64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-linux-riscv64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==",
|
||||||
|
"cpu": [
|
||||||
|
"riscv64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-linux-s390x": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==",
|
||||||
|
"cpu": [
|
||||||
|
"s390x"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-linux-x64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-netbsd-arm64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"netbsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-netbsd-x64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"netbsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-openbsd-arm64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"openbsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-openbsd-x64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"openbsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-sunos-x64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"sunos"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-win32-arm64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@typescript/typescript-win32-x64": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/typescript": {
|
||||||
|
"version": "7.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz",
|
||||||
|
"integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.20.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@typescript/typescript-aix-ppc64": "7.0.2",
|
||||||
|
"@typescript/typescript-darwin-arm64": "7.0.2",
|
||||||
|
"@typescript/typescript-darwin-x64": "7.0.2",
|
||||||
|
"@typescript/typescript-freebsd-arm64": "7.0.2",
|
||||||
|
"@typescript/typescript-freebsd-x64": "7.0.2",
|
||||||
|
"@typescript/typescript-linux-arm": "7.0.2",
|
||||||
|
"@typescript/typescript-linux-arm64": "7.0.2",
|
||||||
|
"@typescript/typescript-linux-loong64": "7.0.2",
|
||||||
|
"@typescript/typescript-linux-mips64el": "7.0.2",
|
||||||
|
"@typescript/typescript-linux-ppc64": "7.0.2",
|
||||||
|
"@typescript/typescript-linux-riscv64": "7.0.2",
|
||||||
|
"@typescript/typescript-linux-s390x": "7.0.2",
|
||||||
|
"@typescript/typescript-linux-x64": "7.0.2",
|
||||||
|
"@typescript/typescript-netbsd-arm64": "7.0.2",
|
||||||
|
"@typescript/typescript-netbsd-x64": "7.0.2",
|
||||||
|
"@typescript/typescript-openbsd-arm64": "7.0.2",
|
||||||
|
"@typescript/typescript-openbsd-x64": "7.0.2",
|
||||||
|
"@typescript/typescript-sunos-x64": "7.0.2",
|
||||||
|
"@typescript/typescript-win32-arm64": "7.0.2",
|
||||||
|
"@typescript/typescript-win32-x64": "7.0.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
06_js-debug/unterricht/tag46/04_error-types/package.json
Normal file
15
06_js-debug/unterricht/tag46/04_error-types/package.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "04_error-types",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"start": "npx tsc 04_type-error.ts"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"type": "commonjs",
|
||||||
|
"devDependencies": {
|
||||||
|
"typescript": "^7.0.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
135
06_js-debug/unterricht/tag46/05_logical-error/logical-error.html
Normal file
135
06_js-debug/unterricht/tag46/05_logical-error/logical-error.html
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Logical Error</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" />
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="container py-5">
|
||||||
|
<h1>Logical Error</h1>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
{
|
||||||
|
const n = 10;
|
||||||
|
|
||||||
|
// if (n % 2 === 0) {
|
||||||
|
// console.log('odd'); // Annahme vertauscht
|
||||||
|
// } else {
|
||||||
|
// console.log('even');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const evenNumbers = _.range(11).filter((n) => n % 2);
|
||||||
|
const evenNumbers = _.range(11).filter((n) => n % 2 === 0);
|
||||||
|
|
||||||
|
console.log('evenNumbers:', evenNumbers);
|
||||||
|
|
||||||
|
// [x]: Ist die Jahreszahl ohne Rest durch 4 teilbar, ist es ein Schaltjahr (z.B. 2024).
|
||||||
|
// [x]: Ist die Jahreszahl durch 100 teilbar, ist es kein Schaltjahr (z.B. 1900).
|
||||||
|
// [x]: Ist die Jahreszahl durch 400 teilbar, ist es doch ein Schaltjahr (z.B. 2000).
|
||||||
|
|
||||||
|
// function isLeapYear(year) {
|
||||||
|
// if (year % 4 === 0) {
|
||||||
|
// return true;
|
||||||
|
// } else if (year % 100 === 0) {
|
||||||
|
// return true;
|
||||||
|
// } else if (year % 400 === 0) {
|
||||||
|
// return true;
|
||||||
|
// } else {
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
const isLeapYear = (year) => {
|
||||||
|
// if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
|
||||||
|
// return true;
|
||||||
|
// } else {
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
|
||||||
|
return (!isNaN(year) && year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Test cases
|
||||||
|
console.log(isLeapYear(2020)); // => true, Expected output: true (leap year)
|
||||||
|
console.log(isLeapYear(1900)); // => true, Expected output: false (not a leap year)
|
||||||
|
console.log(isLeapYear(2000)); // => true, Expected output: true (leap year)
|
||||||
|
|
||||||
|
// ==========
|
||||||
|
|
||||||
|
// function printCharacters(str) {
|
||||||
|
// console.log(str[1] + str[4] + str[6]);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// function solve(str) {
|
||||||
|
// printCharacters(str);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// solve('Release a new iPhone every year'); // => 'eae', Expected Output: 'Res'
|
||||||
|
|
||||||
|
function printCharacters(str) {
|
||||||
|
console.log(str[0] + str[3] + str[5]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function solve(str) {
|
||||||
|
printCharacters(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
solve('Release a new iPhone every year'); // => 'Res'
|
||||||
|
|
||||||
|
// =============
|
||||||
|
// // Incorrect index example
|
||||||
|
// function findAverageLength(words) {
|
||||||
|
// if (words.length === 0) {
|
||||||
|
// return 0;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// let totalLength = 0;
|
||||||
|
|
||||||
|
// for (let i = 1; i < words.length; i++) {
|
||||||
|
// if (typeof words[i] === 'string') {
|
||||||
|
// totalLength += words[i].length;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return totalLength / words.length;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const words = ['apple', 'banana', 'orange'];
|
||||||
|
// console.log(findAverageLength(words)); // 4 -> Expected output: 5.6666...
|
||||||
|
|
||||||
|
// Incorrect index example
|
||||||
|
function findAverageLength(words) {
|
||||||
|
if (words.length === 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
let totalLength = 0;
|
||||||
|
|
||||||
|
for (let i = 0; i < words.length; i++) {
|
||||||
|
if (typeof words[i] === 'string') {
|
||||||
|
totalLength += words[i].length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalLength / words.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
const words = ['apple', 'banana', 'orange'];
|
||||||
|
console.time('for() avg length');
|
||||||
|
console.log(findAverageLength(words)); // 4 -> Expected output: 5.6666...
|
||||||
|
console.timeEnd('for() avg length');
|
||||||
|
|
||||||
|
console.time('join() avg length');
|
||||||
|
console.log(words.join('').length / words.length);
|
||||||
|
console.timeEnd('join() avg length');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user