0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

変数宣言機能による違い

Last updated at Posted at 2023-05-15
タイプ 再宣言 再代入 スコープ 初期化 (ホイスティング)
let × ブロック ×
const × × ブロック ×
var 関数 undefined

「再宣言」varは再宣言できるが、letは再宣言できない
let a = 0;
let a = 0;
コンソール結果↓
Uncaught SyntaxError: Identifier 'a' has already been declared

var b = 0;
var b= 0;
コンソール結果↓
0

「再代入」letは再代入できるが、constは再代入できない

let c = 0;
c = 1;
コンソール結果↓
1

const d = 0;
d = 1;
コンソール結果↓
main.js:22 Uncaught TypeError: Assignment to constant variable.

「ブロックスコープ」 letはスコープの条件が適応されるがvarはスコープの条件は無視される

{
let e = 0;
}
コンソール結果↓
VM70:1 Uncaught ReferenceError: e is not defined

{
var e = 0;
}
コンソール結果↓
0

「ホイスティング」letは宣言前に値を取得するとエラーになるがvarは undefined となる

console.log(h);
let h = 0;
コンソール結果↓
main.js:45 Uncaught ReferenceError: Cannot access 'h' before initialization

console.log(g);
var g = 0;

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?