Skip to main content

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