Variable scope
When you define a function in the root of your script, it is available globally throughout the script, including inside the function block. When you define a variable inside the function block, it is available only inside the function block.
let and const
Once const
is defined it cannot be changed. Like
const PI = 3.14;
The value of a const
cannot be changed later. On the other hand let
is another variable type, which has even smaller scope than var
. let
has scope only in a block level.
function varScope() {
var localVar = 1;
if (localVar) {
var localVar = 2;
console.log(localVar);
}
console.log(localVar);
}
varScope()
2
2
So we see that if we reassign a variable inside a block, the variable is changed for the whole function. Here comes the let
.
function varScope() {
var localVar = 1;
if (localVar) {
let localVar = 2;
console.log(localVar);
}
console.log(localVar);
}
varScope()
2
1
Note that if we define the first variable with let
, it's scope will be whole function block while the scope of second let
is only the if-condition block.
Default values for function argument
function greetUser(greetingMessage="Hello", userName="User") {
console.log(greetingMessage + " " + userName);
};
> greetUser()
Hello User
> greetUser("Welcome")
Welcome User
> greetUser("Welcome", "Pranab")
Welcome Pranab
Arbitrary number of arguments
We can access the arguments by the arguments
object.
function sumAll() {
var sum = 0;
for (var ii=0; ii<arguments.length; ii++) {
sum += arguments[ii];
};
return sum;
};
> sumAll(2, 3, 4)
9