Introduction
In JavaScript, it is said that semicolons are optional. It's true, because JavaScript automatically inserts a semicolon, where it is required. Sometimes this feature confuses us a lot. This article is written for those who have just started writing JavaScript and for those who don’t know the automatic insertion of semicolon in JavaScript.
- function fun1() {
- return {
- a: 10
- };
- }
- function fun2() {
- return {
- a: 10
- };
- }
At first look, the code given above looks the same but look at the output given below.
Console.log(fun1());
Output
Object { a: 10 }
Console.log(fun2());
Output
undefined
It is surprising that fun2() returns undefined without any error being thrown.
The reason behind the function returning undefined is the fact that in JavaScript semicolons are optional (although it is not a good practice to ignore them). Hence, when the line with the return statement is executed in fun2(), it automatically places a semicolon immediately at the end of the return statement. In this case, no error is thrown as the remainder is perfectly valid, even though it is not invoked and doesn't do anything.
This behavior also suggests following the convention of placing an opening curly brace at the end of the same line and not at the new line.
Following statements must be terminated with the semicolons
- empty statement
- let
- const
- import, and export
- expression statement
- var statement
- debugger statement
- continue statement
- break statement
- return statement
- throw statement
Rules of automatic semicolon insertion
There are three basic rules of semicolon insertion, which are given below.

Pawan IngalePosted May 30, 2017, 9:42 AM
Worth reading article. :)