JavaScript Konsepter
Konsepter som er unike eller spesielle for JavaScript.
let, const og var
Tre måter å deklarere variabler.
let name = "Ola"; // Can be changed, block scope
const PI = 3.14159; // Cannot be changed
var old = "avoid"; // Old way, function scope
let |
const |
var |
|
|---|---|---|---|
| Kan endres | Ja | Nei | Ja |
| Scope | Blokk | Blokk | Funksjon |
| Hoisting | Nei | Nei | Ja |
Tip
Bruk const som standard, let når verdien må endres.
=== vs ==
JavaScript har to typer likhet.
// == (loose equality) - converts types
5 == "5" // true
0 == false // true
// === (strict equality) - no conversion
5 === "5" // false
0 === false // false
Warning
Bruk alltid === og !== for å unngå uventede resultater.
Arrow Functions
Kortere syntaks for funksjoner.
// Regular function
function add(a, b) {
return a + b;
}
// Arrow function
const add = (a, b) => {
return a + b;
};
// Short version (one line, implicit return)
const add = (a, b) => a + b;
// One parameter - parentheses optional
const double = x => x * 2;
Array-metoder
forEach - gjør noe med hvert element
map - lag ny array med endrede verdier
filter - lag ny array med utvalgte elementer
find - finn første element som matcher
reduce - reduser til én verdi
Andre nyttige metoder
Objekter
Samling av egenskaper (key-value pairs).
const person = {
name: "Ola",
age: 25,
city: "Oslo"
};
// Access
console.log(person.name); // "Ola"
console.log(person["age"]); // 25
// Change/add
person.age = 26;
person.job = "Developer";
Destructuring
const person = { name: "Ola", age: 25, city: "Oslo" };
// Extract values
const { name, age } = person;
console.log(name); // "Ola"
// With arrays
const [first, second] = ["a", "b", "c"];
console.log(first); // "a"
Template Literals
Strenger med innebygde uttrykk (backticks).
const name = "Ola";
const age = 25;
// Old way
const message1 = "Hi, " + name + "! You are " + age + " years old.";
// Template literal
const message2 = `Hi, ${name}! You are ${age} years old.`;
// Multi-line text
const html = `
<div>
<h1>${name}</h1>
<p>Age: ${age}</p>
</div>
`;
DOM-manipulering
Endre HTML fra JavaScript.
Velge elementer
// One element
const title = document.getElementById("title");
const button = document.querySelector(".my-button");
// Multiple elements
const allP = document.querySelectorAll("p");
Endre innhold og stil
const el = document.getElementById("title");
el.textContent = "New text"; // Text only
el.innerHTML = "<em>Italic</em> text"; // HTML
el.style.color = "blue"; // Style
el.classList.add("active"); // Class
Opprette elementer
const newDiv = document.createElement("div");
newDiv.textContent = "Hello!";
document.body.appendChild(newDiv);
Events
Reagere på brukerhandlinger.
const button = document.querySelector("button");
button.addEventListener("click", () => {
console.log("Clicked!");
});
// With event object
button.addEventListener("click", (event) => {
console.log(event.target);
});
Vanlige events
| Event | Beskrivelse |
|---|---|
click |
Mouse click |
mouseover |
Mouse over element |
keydown |
Key pressed |
submit |
Form submitted |
change |
Input value changed |
load |
Page loaded |
Spread og Rest
Spread (...) - utvide arrays/objekter
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 }; // { a: 1, b: 2, c: 3 }
Rest (...) - samle argumenter
Asynkron JavaScript
setTimeout og setInterval
// Run after 2 seconds
setTimeout(() => {
console.log("2 seconds have passed");
}, 2000);
// Run every second
const id = setInterval(() => {
console.log("Tick");
}, 1000);
clearInterval(id); // Stop