Function Declaration - Hoisting, Parameters vs Arguments, Rest
What is Function Declaration?
- Function declaration is the most common way to create a function in JavaScript.
- It uses:
functionkeyword- function name
- parameters (optional)
- curly braces
{}
Example
function fruit(item){
console.log(item);
}
fruit("apple");
"apple"is passed → output will be:apple
Hoisting in JavaScript
- Function declarations are hoisted.
- This means:
- You can call a function before declaring it
fruit("apple");
function fruit(item){
console.log(item);
}
- Function declarations are moved to the top during execution.
Variable vs Function (Hoisting Difference)
console.log(x);
let x = "Anil Sidhu";
- This gives an error
But function works:
fruit("apple");
function fruit(item){
console.log(item);
}
Type of Function
console.log(typeof fruit);
Output: "function"
Instance Check
console.log(fruit instanceof Object);
Output: true
console.log(fruit instanceof String);
Output: false
Parameter vs Argument
function fruit(item){ // parameter
console.log(item);
}
fruit("apple"); // argument
- Parameter → variable inside function (
item) - Argument → value passed (
"apple")
Default Parameter
function fruit(item, item2="no other fruit"){
console.log(item, item2);
}
fruit("apple");
Output:
apple no other fruit
fruit("apple", "banana");
Output:
apple banana
Multiple Arguments Problem
fruit("apple","banana","orange","pineapple");
If function is:
function fruit(item){
console.log(item);
}
Only "apple" will be used.
Rest Operator
function fruit(...items){
console.log(items);
}
Output:
["apple","banana","orange","pineapple"]
Access values:
console.log(items[0]); // apple
console.log(items[1]); // banana
Check Number of Parameters
function fruit(item,a,b,c){
console.log(item);
}
console.log(fruit.length);
Output: 4
Final Example (From Your Code)
function fruit(item,a,b,c){ // parameter
console.log(item);
}
console.log(fruit.length);
fruit("apple","banana","orange","pineapple") // argument