JavaScript Grunder
Den här artikeln förklarar grunderna i JavaScript.
YouTube Video
Kör Hello World!
Översikt över JavaScript
JavaScript är ett av de mest använda programmeringsspråken inom webbutveckling. Det används främst för att lägga till dynamiska element till webbsidor, möjliggöra användargränssnittsmanipulation, datatransmission och skapande av animationer. Det kan köras på klientsidan (i en webbläsare) och på serversidan med hjälp av teknologier som Node.js. På grund av dess enkelhet och flexibilitet är det lätt för nybörjare att lära sig och används i stor utsträckning av professionella utvecklare.
Variabler i JavaScript
Variabler i JavaScript är som behållare som används för att lagra och återanvända data. Genom att använda variabler kan du hantera och manipulera värden i ditt program.
Variabeldeklaration
I JavaScript finns det tre nyckelord för att deklarera variabler.
var
: En gammal metod för att deklarera variabler, men dess scope-hantering är komplicerad och kräver försiktighet. Den är baserad på funktionsscopet.
1var x = 10;
let
: Introducerades i ES6, det är ett sätt att deklarera variabler med blockscope. Den kan tilldelas nytt värde men kan inte deklareras om i samma scope.
1let y = 20;
const
: Används för att deklarera variabler som är oföränderliga (konstanter). Den har blockscope och kan inte tilldelas om eller deklareras om efter deklaration.
1const z = 30;
Scope
Variabler har konceptet scope.
Globalt scope
1var globalVar = 'This is global'; // Global scope
2
3function accessGlobal() {
4 console.log(globalVar); // Able to access global variable
5}
6
7accessGlobal(); // Outputs "This is global"
- Globalt scope-variabler är åtkomliga var som helst. Variabler deklarerade med
var
har globalt eller funktionsscope, menlet
ochconst
har blockscope.
Blockscope
1if (true) {
2 let localVar = "This is a block-scoped variable";
3
4 // Accessible inside the brackets
5 console.log(localVar);
6}
7
8// Error: localVar cannot be used outside of this scope
9console.log(localVar);
-
Blockscope: Variabler deklarerade med
let
ellerconst
är bara giltiga inom{}
(klammerparenteser). -
Ett fel inträffar när man försöker att komma åt utanför
{}
(klamrar).
Funktionsscope
1function myFunction() {
2 var functionScoped = 'This is function scope';
3 // Accessible inside the function
4 console.log(functionScoped);
5
6 if (true) {
7 var functionVar = 'This is also function scope';
8 }
9 // functionVar can be used inside of the fucntion
10 console.log(functionVar);
11}
12
13myFunction(); // Outputs "This is function scope"
14
15// Error: functionScoped is not defined
16console.log(functionScoped);
-
Funktionsscope: Variabler och funktioner definierade inuti en funktion kan inte åtkommas utanför funktionen. Variabler som deklareras inuti en funktion med
var
tillhör detta scope. -
I det här exemplet kan variabeln
functionVar
nås utanför{}
(klammerparenteser) så länge den är inom funktionsomfånget. Å andra sidan leder åtkomst till variabelnfunctionScoped
utanför funktionsomfånget till ett fel.
Således har variabler deklarerade med var endast funktionsscope och inget blockscope, vilket utgör en risk för att användas i oväntade områden. Det är att föredra att använda const för variabler som inte ändras och vanligtvis använda let för att undvika användningen av var så mycket som möjligt.
Datatyper
JavaScript-variabler kan lagra värden av olika datatyper. Det finns string
för att hantera text och number
för att hantera numeriska värden.
De huvudsakliga datatyperna är följande:.
1// Number: Numeric type (integer and floating point number)
2let integerNumber = 42;
3let floatNumber = 3.14;
4console.log("Number (Integer):", integerNumber);
5console.log("Number (Float):", floatNumber);
6
7// String: String type
8let text = "Hello, JavaScript!";
9console.log("String:", text);
10
11// Boolean: Boolean type (true or false)
12let isJavaScriptFun = true;
13let isError = false;
14console.log("Boolean (true):", isJavaScriptFun);
15console.log("Boolean (false):", isError);
16
17// Null: Explicitly represents "nothing"
18let emptyValue = null;
19console.log("Null:", emptyValue);
20
21// Undefined: The default value assigned to an uninitialized variable
22let notDefined;
23console.log("Undefined:", notDefined);
24
25// Symbol: A data type for creating unique values
26let uniqueKey = Symbol("id");
27console.log("Symbol:", uniqueKey);
- Primitiva typer:
number
: Hanterar numeriska värden (heltal och flyttal).string
: Hanterar textsträngar.boolean
: Hanterar booleanvärdentrue
ellerfalse
.null
: Representerar uttryckligen värdet 'ingenting'.undefined
: Ett värde som automatiskt tilldelas till variabler som inte har initialiserats.Symbol
: En datatyp som används för att skapa unika värden.
1// Object: A data structure that holds multiple properties
2let person = {
3 name: "Alice",
4 age: 25,
5 isStudent: false
6};
7console.log("Object:", person);
8console.log("Object Property (name):", person.name);
9console.log("Object Property (age):", person.age);
10
11// Array: A list that holds multiple values
12let numbers = [10, 20, 30, 40];
13console.log("Array:", numbers);
14console.log("Array Element (index 0):", numbers[0]);
15
16// Function: A function object
17function greet(name) {
18 return "Hello, " + name + "!";
19}
20console.log("Function Output:", greet("Bob"));
21
22// Another way to define a function using arrow syntax
23let add = (a, b) => a + b;
24console.log("Arrow Function Output (3 + 5):", add(3, 5));
- Objekttyper:
Objekt
: En datastruktur med flera egenskaper.Array
: En lista som innehåller flera värden.Function
: Ett funktionellt objekt.
Tilldelning och omtilldelning av variabler
Variabler som deklareras med let
eller var
kan tilldelas om, men const
kan inte tilldelas om efter att ha deklarerats.
1let score = 100;
2score = 150; // Correct
3
4const pi = 3.14;
5pi = 3.14159; // Error
Variabellyftning
I JavaScript finns det ett fenomen där variabeldeklarationer 'lyfts' till toppen av deras räckvidd. Variabler som deklareras med var
lyfts, men att använda let
eller const
innan deklaration orsakar ett fel.
1console.log(a); // undefined
2var a = 10;
3console.log(a); // 10
- I detta fall lyfts variabler deklarerade med
var
upp och deras värden skrivs ut.
1console.log(b); // ReferenceError
2let b = 20;
- Variabler deklarerade med
let
lyfts inte upp, vilket resulterar i ett fel.
Korrekt användning av variabler
Tänk på följande punkter för korrekt användning av variabler.
- Föredra att använda
const
och undvik att användavar
. - Följ namngivningskonventioner för variabler.
- Använd
camelCase
, till exempeluserName
ellertotalPrice
. - Undvik tvetydiga namn som
data
ellervalue
, och använd meningsfulla namn för att förbättra läsbarheten. - Ett variabelnamn kan inte börja med en siffra, så namn som
1variable
är inte tillåtna.
- Använd
- Överdriven användning av globala variabler kan orsaka oklarheter i scope och leda till buggar, så undvik att använda dem när det är möjligt.
Sammanfattning
var
: En äldre metod för variabeldeklaration som har funktionsräckvidd.let
: En blockbegränsad variabel som kan tilldelas om.const
: En blockbegränsad variabel som inte kan tilldelas om (konstant).- Det är viktigt att använda variabler enligt deras datatyper och att vara medveten om deras räckvidd.
Vad är flykttecken i JavaScript?
Flykttecken är en metod som används för att representera tecken med speciella betydelser inom vanliga strängliteraler. I JavaScript introduceras flykttecken med ett omvänt snedstreck \
för att ge en sträng specialeffekter eller inkludera kontrolltecken. Flykttecken är användbara för att inkludera element som radbrytningar, tabbar eller citattecken i en sträng.
Exempel på användning av flykttecken
Nedan visas några exempel på kod som använder flykttecken.
Flykta dubbla och enkla citattecken
Använd flykttecken för att representera dubbla eller enkla citattecken inom en sträng.
1const singleQuote = 'It\'s a beautiful day!';
2console.log(singleQuote); // Output: It's a beautiful day!
3
4const doubleQuote = "He said, \"Hello there!\"";
5console.log(doubleQuote); // Output: He said, "Hello there!"
Flykta omvända snedstreck
För att inkludera ett omvänt snedstreck i en sträng, flykta det med \
.
1const path = "C:\\Program Files\\MyApp";
2console.log(path); // Output: C:\Program Files\MyApp
Flykta radbrytningar och tabbar
Du kan infoga radbrytningar och tabbar för att göra långa strängar mer läsbara.
1const multiline = "First line\nSecond line\nThird line";
2console.log(multiline);
3// Output:
4// First line
5// Second line
6// Third line
7
8const tabbed = "Column1\tColumn2\tColumn3";
9console.log(tabbed); // Output: Column1 Column2 Column3
Flykta Unicode-tecken
Genom att använda Unicode-flyktsekvenser kan du representera specifika tecken med hexadecimala koder.
1const smiley = "\u263A"; // Copyright Mark
2console.log(smiley);
Anteckningar
Överdriven användning av flykttecken kan skada läsbarheten
Överdriven användning av flykttecken kan minska läsbarheten i din kod. Det är särskilt viktigt att använda flykttecken på ett genomtänkt sätt i långa strängar.
Överväg att använda mönstersträngar (template literals)
I JavaScript kan mönstersträngar (template literals) som använder bakåtvända apostrofer inkludera radbrytningar eller inbäddade uttryck utan flykttecken.
1const message = `This is a message
2that spans multiple lines`;
3console.log(message);
4// Output:
5// This is a message
6// that spans multiple lines
Sammanfattning
Flykttecken är viktiga för att representera speciella eller kontrolltecken inom strängar. Genom att flykta enkla eller dubbla citattecken och lägga till radbrytningar eller tabbar kan du skapa mer flexibla strängar. Emellertid kan överdriven användning av flykttecken göra koden svårare att läsa, så överväg att använda mönstersträngar (template literals) där det passar.
JavaScript-versioner
JavaScript har en standard specifikation som kallas ECMAScript (ES). JavaScript har utvecklats utifrån denna standard. Nedan finns en kort beskrivning av dess huvudversioner.
-
ES3 (1999)
Den första versionen som blev allmänt använd. Grundläggande syntax och funktioner fastställdes.
-
ES5 (2009)
Introduktion av
strict mode
och nya funktioner somArray.prototype.forEach
,Object.keys
, etc. lades till. -
ES6 / ES2015 (2015)
En större uppdatering av JavaScript har gjorts. Många funktioner grundläggande för modern JavaScript, såsom
let
,const
,arrow functions
,klasser
,promises
,moduler
, etc., introducerades. -
ES7 / ES2016 (2016)
Array.prototype.includes
ochExponentiation Operator (**)
lades till. -
ES8 / ES2017 (2017)
async/await
introducerades, vilket gjorde det enklare att skriva asynkrona processer. -
ES9 / ES2018 (2018)
Asynkrona iteratorer och
Rest/Spread Properties
lades till. -
ES10 / ES2019 (2019)
flatMap
ochObject.fromEntries
lades till. -
ES11 / ES2020 (2020)
Optional Chaining (?.)
ochNullish Coalescing Operator (??)
lades till, vilket möjliggör att skriva kod enklare och säkrare. -
ES12 / ES2021 (2021)
String.prototype.replaceAll
ochPromise.any
, bland annat, lades till. -
ES13 / ES2022 (2022)
Array.prototype.at
och klassensprivate
-fält (#field
), bland annat, lades till. -
ES14 / ES2023 (2023)
Array.prototype.toSorted
ochSymbol.prototype.description
, bland annat, lades till. -
ES15 / ES2024 (2024)
Promise.withResolvers
för enklare hantering avPromise
och justerbarArrayBuffer
, bland annat, lades till.
Nuvarande JavaScript uppdateras varje år, och nya funktioner läggs till även i den senaste versionen.
Du kan följa med i artikeln ovan med hjälp av Visual Studio Code på vår YouTube-kanal. Vänligen kolla även in YouTube-kanalen.