Edited at

#1. 変数 - var , let , const


var

・再定義:可能

・再代入:可能

・スコープ:グローバル

'use strict'

// 定義
var x = 10;

// 再代入可能の実証
x = 20;

// 再定義可能の実証
var x = 30;

// スコープの実証
if (true) {
var y = 40;
}
console.log(y);
// console > 40


let

・再代入:可能

・再定義:不可

・スコープ:ローカル

'use strict'

// 定義
let x = 10;

// 再代入可能の実証
x = 20;

// 再定義不可の実証
let x = 30;
// console > Uncaught SyntaxError: Identifier 'x' has already been declared

// スコープの実証
if (true) {
let y = 40;
}
console.log(y);
// console > Uncaught ReferenceError: y is not defined


const

・再代入:不可

・再定義:不可

・スコープ:ローカル

'use strict'

// 定義
const x = 10;

// 再代入不可の実証
x = 20;
// console > Uncaught TypeError: Assignment to constant variable.

// 再定義不可の実証
const x = 30;
// console > Uncaught SyntaxError: Identifier 'x' has already been declared

// スコープの実証
if (true) {
const y = 40;
}
console.log(y);
// console > Uncaught ReferenceError: y is not defined