Water Sunlight

軽量プログラミングの文法 - JavaScript/Python

ユーザ用ツール

サイト用ツール


js:function:scope

文書の過去の版を表示しています。


JavaScript 変数のスコープ

y2sunlight 2021-04-05

var variable = 'グローバル変数';
    function func(arg) {
    var variable = 'ローカル変数';
    return `${arg} ${variable}`;
}
console.log(func('引数'));  // 出力:'引数 ローカル変数'
console.log(variable );  // 出力:'グローバル変数'

グローバル変数

  • 関数の外でvarにより宣言された変数
  • varを使用しない全ての変数はグローバル変数として扱われる

※ 変数とはvar又はletにより生成される。それらのないものはグローバルオブジェクトのプロパティとして扱われる

ローカル変数

  • 関数内でvarにより宣言された変数
  • 仮引数

※ ローカル変数を作りたい時は常にvar
※ ES2015以前はブロックスコープがなかった

var myVariable = 'Global Variable';
 
function func() {
    console.log(myVariable);  // 出力:undefined
    var myVariable;  // ※ ここをコメントアウト
    return myVariable;
}
 
console.log(func());  // 出力:undefined

varの位置に関わらずmyVariableは関数内のどこでも常にローカルスコープを持つ
※ var myVariableをコメントアウトするとグローバルスコープを持つようになる
⇒ 変数の巻き上げ(hoisting)と呼ばれる

ブロックスコープ*2015

let(変数)又はconst(定数)によりブロックスコープを作る事ができる

let i = 1;
var j = 1;
const c = 1;
{
    let i = 2;
    var j = 2;
    const c = 2;
    console.log(`${i} ${j} ${c}`);  // 出力:2 2 2
}
console.log(`${i} ${j} ${c}`);  // 出力:1 2 1 ※varは上書きされている
js/function/scope.1617589443.txt.gz · 最終更新: 2021/04/05 11:24 by tanaka