var宣言は同じスコープで再宣言可能

var宣言や関数宣言は同じスコープで再宣言可能だが、letconstclass宣言でやるとエラー。

'use strict'

// var宣言はstrictモードでも再宣言できる。
var var変数 = 'トップ'
var var変数 = 'トップその2'

// 関数宣言も再宣言できる。
function 関数() {}
function 関数() {}

// letはstrictモードでなくても再宣言できない。const宣言も以下同様。
let let変数 = 'トップ'
// let let変数 = 'トップその2' // SyntaxError
// 一度let宣言したものはvarといえども再宣言できない。
// var let変数 = 'トップその2' // SyntaxError

// class宣言は再宣言できない。
class クラス {}
// class クラス{} // SyntaxError