Lesson 14: JavaScript Functions Part 2
Master advanced JavaScript functions with interactive examples and practical applications.
14.1 Finding Maximum Number
This example demonstrates how to create a function that finds and returns the maximum number out of three numbers entered by the user.
Example 14.1: Maximum Number Function
// Function to find maximum of three numbers
function max(x, y, z) {
if ((x > y) && (x > z)) {
return x;
} else if ((y > x) && (y > z)) {
return y;
} else {
return z;
}
}
// Using the function
const num1 = 25;
const num2 = 37;
const num3 = 19;
console.log(`Max of ${num1}, ${num2}, ${num3} is ${max(num1, num2, num3)}`);
// Output: Max of 25, 37, 19 is 37
14.2 Creating Dice Functions
Dice functions are essential for many games. We'll explore two types: a digital dice that displays numbers and a graphical dice that shows dice images.
14.2.1 Digital Dice Function
This function uses Math.random() to generate random numbers between 1 and 6, simulating a dice roll.
Example 14.2: Digital Dice
// Digital dice function
function rollDigitalDice() {
return Math.floor(1 + Math.random() * 6);
}
// Roll the dice
const roll = rollDigitalDice();
console.log(`Dice roll: ${roll}`);
14.2.2 Graphical Dice Function
This function displays graphical representations of dice using images. Each number corresponds to a dice image.
Example 14.3: Graphical Dice
// Graphical dice function
function rollGraphicalDice() {
const roll = Math.floor(1 + Math.random() * 6);
return `<img src="dice-${roll}.png" alt="Dice ${roll}">`;
}
// Roll the dice and display
document.getElementById('graphicalDice').innerHTML =
rollGraphicalDice();
14.3 Advanced Function Techniques
Explore more advanced function techniques including higher-order functions and function composition.
14.3.1 Higher-Order Functions
Higher-order functions are functions that take other functions as arguments or return functions.
Example 14.4: Function as Argument
// Higher-order function example
function calculate(operation, a, b) {
return operation(a, b);
}
// Define operations
function add(x, y) { return x + y; }
function multiply(x, y) { return x * y; }
// Using the higher-order function
const sum = calculate(add, 5, 3); // 8
const product = calculate(multiply, 5, 3); // 15
14.3.2 Function Composition
Function composition is combining two or more functions to produce a new function.
Example 14.5: Function Composition
// Function composition const compose = (f, g) => x => f(g(x)); // Example functions const double = x => x * 2; const square = x => x * x; const increment = x => x + 1; // Compose functions const doubleThenSquare = compose(square, double); const incrementThenDouble = compose(double, increment); // Using composed functions const result1 = doubleThenSquare(3); // (3*2)^2 = 36 const result2 = incrementThenDouble(3); // (3+1)*2 = 8
14.4 Real-World Applications
Functions are used in virtually every JavaScript application. Here are more practical examples:
Example 14.6: Password Strength Checker
This function checks password strength based on length, character diversity, and special characters.
function checkPasswordStrength(password) {
let strength = 0;
// Length check
if (password.length >= 8) strength += 1;
if (password.length >= 12) strength += 1;
// Character diversity
if (/[a-z]/.test(password)) strength += 1;
if (/[A-Z]/.test(password)) strength += 1;
if (/[0-9]/.test(password)) strength += 1;
if (/[^a-zA-Z0-9]/.test(password)) strength += 1;
// Strength categories
if (strength <= 2) return "Weak";
if (strength <= 4) return "Medium";
if (strength <= 6) return "Strong";
return "Very Strong";
}
Example 14.7: Temperature Converter
Convert between Celsius, Fahrenheit, and Kelvin using functions.
// Temperature conversion functions
function celsiusToFahrenheit(celsius) {
return (celsius * 9/5) + 32;
}
function fahrenheitToCelsius(fahrenheit) {
return (fahrenheit - 32) * 5/9;
}
function celsiusToKelvin(celsius) {
return celsius + 273.15;
}
function kelvinToCelsius(kelvin) {
return kelvin - 273.15;
}