JavaSkriptdefiniera och anropa funktioner med exempel

⚡ Smart sammanfattning

JavaSkriptfunktioner grupperar återanvändbara kodblock som bara körs när de anropas, och den här genomgången visar hur man deklarerar ett, skickar argument till det och returnerar ett värde tillbaka till anroparen.

  • 🔘 Syntax: Funktionsnyckelordet, ett namn, parenteser och klammerparenteser definierar alla klassiska funktioner.
  • ☑️ Kallelse: Code inuti en funktion körs endast när funktionsnamnet anropas inom parenteser.
  • argument: Värden som placeras inom parenteser skickar data från anroparen till funktionens brödtext.
  • 🧪 Lämna tillbaka: Nyckelordet return skickar ett värde tillbaka till anroparen och stoppar körningen vid den tidpunkten.
  • 🛠️ varianter: Deklarationer, uttryck, pilfunktioner, IIFE:er och återanrop passar alla för en annan situation.
  • 📊 Omfattning: Funktionsdeklarationer lyfts, medan funktionsuttryck och pilfunktioner inte gör det.

JavaSkriptdefiniera och anropa funktioner

Vad är funktion i JavaManus?

Funktioner är mycket viktiga och användbara i alla programmeringsspråk eftersom de gör koden återanvändbar. En funktion är ett kodblock som bara körs om det anropas. Om du har några rader kod som behöver användas flera gånger kan du skapa en funktion som innehåller de upprepade raderna kod och sedan anropa funktionen var du vill.

Ingenting innanför klammerparenteserna körs av sig självt. Webbläsaren lagrar blocket under det namn du gav det, och koden körs bara när det namnet skrivs med parenteser efter, till exempel myFunction()Funktioner står därför i centrum för varje JavaScript programmet, om skriptet lever inuti sidan eller i en extern fil.

Hur man skapar en funktion i JavaScript

  1. Använd nyckelordet fungera följt av namnet på funktionen.
  2. Öppna och stäng parenteser efter funktionsnamnet.
  3. Efter parentes, öppna och stäng lockiga hängslen.
  4. Skriv dina kodrader inom hängslen.

Syntax:

function functionname()
{

  lines of code to be executed

}

Exemplet nedan definierar myFunction() och anropar den sedan på nästa rad, så att meddelandet visas så fort sidan laddas. Pröva detta själv:

<html>
<head>
	<title>Functions!!!</title>
	<script type="text/javascript">
      function myFunction()
      {
      	document.write("This is a simple function.<br />");
      }
		myFunction();
	</script>
</head>
<body>
</body>
</html>

Funktion med argument

Du kan även skapa funktioner med argument. Argument bör anges inom parenteser.

Syntax:

function functionname(arg1, arg2)

{

  lines of code to be executed

}

Här countVowels() tar emot det namn besökaren skriver in i prompten, loopar igenom varje tecken och rapporterar hur många vokaler namnet innehåller. Pröva detta själv:

<html>
<head>
	<script type="text/javascript">
		var count = 0;
		function countVowels(name)
		{
			for (var i=0;i<name.length;i++)
			{
              if(name[i] == "a" || name[i] == "e" || name[i] == "i" || name[i] == "o" || name[i] == "u")
              count = count + 1;
			}
		document.write("Hello " + name + "!!! Your name has " + count + " vowels.");
		}
   	 	var myName = prompt("Please enter your name");
    	countVowels(myName);
	</script>
</head>
<body>
</body>
</html>

JavaSkriptreturvärde

Du kan också skapa JS-funktioner som returnerar värden. Inuti funktionen måste du använda nyckelordet avkastning följt av värdet som ska returneras.

Syntax:

function functionname(arg1, arg2)

{

  lines of code to be executed

  return val1;

}

I detta sista exempel returnSum() lämnar tillbaka summan till raden som anropade den, så att resultatet kan sammanfogas till en mening istället för att skrivas ut inuti funktionen. Pröva detta själv:

<html>
<head>
	<script type="text/javascript">
		function returnSum(first, second)
        {
          var sum = first + second;
          return sum;
        }
      var firstNo = 78;
      var secondNo = 22;
      document.write(firstNo + " + " + secondNo + " = " + returnSum(firstNo,secondNo));
	</script>
</head>
<body>
</body>
</html>

Typer av funktioner i JavaScript

De tre exemplen ovan använder alla den klassiska funktionsdeklarationen, men modern JavaScript erbjuder flera andra former. De skiljer sig huvudsakligen åt i huruvida motorn lyfter dem och i hur var och en behandlar this nyckelord.

Funktionstyp Typisk syntax När den används
Funktionsdeklaration funktion hälsning() { } Namngiven, återanvändbar logik; lyft till toppen av sitt omfång
Funktionsuttryck const hälsning = funktion () { }; Lagra en funktion i en variabel; inte hissad
Pilfunktion (ES6) const hälsning = () => { }; Korta återanrop; ärver detta från det omgivande omfånget
Anonym funktion sättTimeout(funktion () { }, 100); Engångslogik som skickas direkt till en annan funktion
IIFE (funktion () { })(); Körs omedelbart och håller sina variabler privata
Återuppringning items.forEach(visaItem); En funktion som överförs till en annan funktion och anropas senare

Observera exemplen ovan: de historiska proverna använder var och document.write(), och båda körs fortfarande i alla webbläsare. Nuvarande praxis deklarerar variabler med let or const och skriver ut via console.log() eller genom att ställa in textContent på ett element, eftersom document.write() raderar en sida som redan har laddats klart. type="text/javascript" Attributet är också valfritt i HTML5.

Funktionsparametrar, argument och standardvärden

Parametrar är platshållarnamnen som anges i definitionen, medan argument är de reella värden som anges när funktionen anropas. countVowels(name) ovan, name är parametern och texten som skrivs in i prompten är argumentet.

function greet(user, greeting = "Hello")
{
  return greeting + ", " + user;
}

greet("Ann");
greet("Ann", "Welcome");
  • En parameter utan matchande argument blir undefined om inte ett standardvärde anges, som greeting är här.
  • Extra argument ignoreras av parameterlistan men kan fortfarande nås via arguments objekt inuti en funktion som inte är en pil.
  • En viloparameter skriven som ...values samlar alla återstående argument till en genuin array.

Funktionsomfattning och lyftning JavaScript

Var en funktion skrivs avgör vad den kan se och när den kan anropas. Två regler förklarar nästan alla överraskningar som nybörjare stöter på.

  • Lyftning: Funktionsdeklarationer flyttas högst upp i sitt omfång innan skriptet körs, så de kan anropas på en rad ovanför sin definition. Funktionsuttryck och pilfunktioner flyttas inte och genererar ett fel om de anropas tidigt.
  • Omfattning: variabler deklarerade med var inuti en funktion är synliga i hela funktionen, medan let och const är begränsade till det block de sitter i. Allt som deklareras utanför varje funktion är globalt.

Vokalräknaren visar detta i praktiken. Dess count variabeln deklareras utanför funktionen, så anropet countVowels() en andra gång på samma sida fortsätter att lägga till den tidigare summan istället för att börja om från noll. Att flytta deklarationen inuti funktionen skulle återställa den vid varje anrop.

Dessa scoping regler överförs även till serverkod, vilket är anledningen till att samma resonemang gäller när funktioner skrivs för node.js, och varför funktionsbeteende förekommer så ofta i JavaIntervjufrågor för manus.

Vanliga frågor

Funktionen körs fortfarande, men den ger tillbaka undefinedAtt tilldela det anropet till en variabel lagrar undefined, vilket är anledningen till att sum-exemplet använder return snarare än att skriva ut totalen inuti funktionens innehåll.

AI-assistenter kan föreslå en funktionstext från en kommentar, förklara ett obekant återanrop rad för rad och föreslå testindata. Kör alltid förslaget, eftersom genererad kod i tysthet kan anta en variabel eller ett webbläsar-API som sidan inte tillhandahåller.

Vanligtvis ja. GitHub Copilot kompletterar pilsyntax och vanliga återanropsmönster från kontexten. Kontrollera värdet på this i resultatet, eftersom en pilfunktion ärver det medan ett klassiskt funktionsuttryck inte gör det.

En closure (avslutning) är en funktion som är buntad med de yttre variabler den refererade till när den skapades. Den inre funktionen fortsätter att läsa dessa variabler även efter att den yttre funktionen är klar, vilket är hur privata räknare och fabriksfunktioner byggs.

Ja, och det kallas rekursion. Funktionen måste innehålla ett basfall som stoppar kedjan, annars genererar webbläsaren ett intervallfel när anropsstacken är förbrukad. Rekursion passar för trädvandring och faktoriala stilproblem.

En async-funktion returnerar alltid ett löfte. Inuti den finns avvaktande pauser som fungerar tills det avvaktande löftet uppfylls, vilket gör att asynkron kod kan läsas uppifrån och ner. Resten av sidan fortsätter att svara medan funktionen väntar.

Koppla den till en händelselyssnare: välj knappen och anropa sedan addEventListener med händelsenamnet och funktionsreferensen. Det äldre inline-attributet onclick fungerar också, men det är nu att föredra att separera markup från beteende.

Parenteser anropar den omedelbart och producerar dess resultat. Att enbart skriva namnet skickar själva funktionen, vilket är vad återanrop behöver. Att lägga till parenteser av misstag inuti setTimeout kör koden direkt snarare än senare.

Sammanfatta detta inlägg med: