sandra-larsson
Educator Fullstack Developer Javascript at Chas Academy
JavaScript
// Definition av en funktion
function doSomething() {
console.log('This is a call from a function')
}
// Funktionen anropas, körs. Eng function call, running, invoking
doSomething()
// Kan köras igen och igen...
doSomething()
doSomething()
// En funktionsdefinition som tar in två parametrar och returnerar ett värde
function processor(apelsin, morot) {
const juice = `Denna funktion gör härlig, saftig juice av ${apelsin} apelsiner och
${morot} morötter. Smaka gärna av slutprodukten!`; //Inne i funktionen så är parametrarna referade som argument
return juice; // Det reserverade ordet return anger vad som ska skickas ut ("returnas") från funktionen
}
let juice = processor(5, 3) // Nu körs juicen..
# Funktioner
Kodblock som körs
function multiply(a,b) {
let result = a * b;
return result;
}
let result = multiply(3,4);
console.log(result); // Skriver ut 12
Valbart namn på funktion
vad funktionen skickar ut (returnerar)
vad funktionen skickar in parametrar)
Eng. Function declaration
Kodblock som körs
const multiply = function(a,b) {
let result = a * b;
return result;
}
let result = multiply(3,4);
console.log(result); // Skriver ut 12
Eng. Function expression
Här tilldelas funktionen i en variabel som sedan anropas
const book = {
author: "JK Rowling",
title: "Harry Potter och de vises sten",
type: "Fiktion",
getDetails: function() {
return `Författare ${this.author} och boken ${this.title} i kategori ${this.type}`;
}
};
console.log(book.getDetails());
# PRESENTING CODE
// Funktionsdeklarationer "hoistas", d.v.s hissas till toppen och blir
// åtkomliga i det omringande scopet. Fördelen är att man kan anropa
// funktionen innan dess definition
foo()
function foo() {
console.log("This function has been hoisted")
}
foo()
bar() // ReferenceError: Cannot access 'bar' before initialization
// Funktionsuttryck hoistas inte eftersom just dessa funktioner tilldelas
// till en variabel. Variabeltilldelningar hoistas inte.
const bar = function() {
console.log("Will this work?")
}
bar()
# FUNKTIONER
// Funktionsutryck utan parametrar
let myFunction = function() {
console.log('Inside function expression');
};
# FUNKTIONER
Det närmsta du kommer Robin hood 🏹
// Funktionsutryck utan parametrar
const myFunction = function() {
console.log('Inside function expression');
};
# FUNKTIONER
Det närmsta du kommer Robin hood 🏹
// Samma funktionsuttryck fast med arrow function
const myFunction = () => {
console.log('Inside arrow function');
};
// Funktionsutryck med en parameter
const displayGreeting = function(name) {
console.log('Hello', name);
};
# PRESENTING CODE
// Funktionsutryck med en parameter
const displayGreeting = function(name) {
console.log('Hello', name);
};
# PRESENTING CODE
// Samma funktionsutryck fast med arrow function
const displayGreeting = (name) => {
console.log('Hello', name);
};
// Funktionsutryck med en parameter
const displayGreeting = function(name) {
console.log('Hello', name);
};
# PRESENTING CODE
// Samma funktionsutryck fast med arrow function
const displayGreeting = (name) => {
console.log('Hello', name);
};
// Med fler paramterar
let displayGreeting = (greeting, name) => {
console.log(greeting + name);
}
# PRESENTING CODE
// Samma funktionsuttryck fast med arrow function
const myFunction = (a, b, c) => a + b + c; //Returnerar summan
const getSomething = thing => `This is a ${thing}!` // Returnerar strängen
// Går alltså bra att ta bort parenteserna om endast en parameter!
Dock finns det en liten skillnad hur this beter sig, mer om det en annan gång.
När ett programmeringsspråk har egenskapen "first-class functions" kan en funktion användas på flera sätt
Endast ett koncept. En egenskap som Javascript har.
// Tilldela funktionen till en variabel
const foo = () => {
console.log("foobar");
};
foo(); // Invoke it using the variable
// foobar
// En funktion är argument till en annan funktion
function sayHello() {
return "Hello, ";
}
function greeting(helloMessage, name) {
console.log(helloMessage() + name);
}
// Pass `sayHello` as an argument to `greeting` function
greeting(sayHello, "JavaScript!");
// Hello, JavaScript!
// Returneras i en annan funktion
function sayHello() {
return () => {
console.log("Hello!");
};
}
# FUNKTIONER
const doSomething = () => console.log('Button has been clicked')
btn.addEventListener('click', doSomething);
Higher-order funktion
Callback-funktion
The return of the high- order functions
function compute(n1, n2, callback) {
return callback(n1, n2);
}
"Var en Jedi!"
Skriv callback-funktionen för:
1. Summera två tal, n1 och n2
2. Testkör!
setTimeout(function(){
console.log('hello!');
}, 1000);
// 1 second later
'hello!'
# PRESENTING CODE
setInterval(function(){
console.log('hello');
}, 1000)
// 1 second
'hello!'
// 2 seconds
'hello!'
By sandra-larsson