1
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 5 years have passed since last update.

JavaScriptのスコープについてメモ

Last updated at Posted at 2018-06-10

#参照可能な範囲

##var/let/constをつけて変数を宣言した場合
関数の内で宣言された変数を参照可能な範囲はブロック内。
関数の外で宣言された変数を参照可能な範囲はファイル内。

##var/let/constを付けずに変数を宣言した場合
関数の内だろうと外だろうと宣言された変数を参照可能な範囲はファイル内。

#寿命
varで宣言された変数はブロックによる寿命が無い。(っえ!?)
つまり、ブロック内で生まれた変数はプログラムがブロックを抜けた後も生き続ける。

if (true){
  var num = 83;
}
console.log(num);
$ nodejs test.js
83

一方でletやconstを使ってブロック内で生まれた変数はブロック抜けた後に開放される。

varを使用している場合にはブロックの処理を無名関数に入れてその関数をcall(this)する方法で上記の動作を回避できる。(左記の方法はおそらく参照不可能になっているだけ。)

1
0
1

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
1
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?