2017年9月28日(木)
[JavaScript] 変数のスコープ #HTML5&CSS3&JavaScript【変数とは入れ物】
プログラミングにおいて、変数[variable]とは、変化する数字や文字などを格納しておく入れ物です。数学で言うところのxとかyといった代数と言えば分かり良いかもしれません。
下記のプログラミングでは、$aに3を、$bに5を格納しました。$bでは、わざわざ変数宣言(var宣言)しています。$cは、変数という入れ物だけ作って、何も格納していません。
--
<script>
$a = 3;
var $b = 5;
var $c;
window.onload = _setup;
function _setup(){
alert($a);
alert($b);
alert($c);
}
</script>
--
↓
-- ダイアログ --
3
5
undefined
--
【変数の種類】
JavaScriptの変数には、2種類あります。
(1)グローバル変数
・プログラミング全体で有効
・関数の外で変数宣言した変数
・変数宣言せずに使用した変数(関数の内外は無視)
-- $a~$d すべてグローバル変数 --
<script>
$a = 3;
var $b = 5;
var $c;
function _Fd(){
$d = 7;
}
</script>
--
(2)ローカル変数
・関数内のみ有効
・関数内で変数宣言した変数
-- $e ローカル変数 --
<script>
function _Fe(){
var $e = 11;
}
</script>
--
$eは、_Fe()関数内だけ有効とで、それ以外の場所では無効いうことです。
ローカル変数の用途としては、関数内だけで完結しているので、プログラミング全体から変数が独立しているといった使い方ができます。
変数の有効範囲をスコープ[scope]と呼びます。簡単でしょ。他のサイトでは、グローバル変数とローカル変数を入りまぜて、よく例示しておられます。一度覗いてみて下さい
なお、関数の引数は、ローカル変数となります。関数内で変数宣言したとみなされるからです。
-- $str,$num,$char すべてローカル変数 --
<script>
function _char($str,$num){
var $char = $str.charAt($num);
alert($char);
}
</script>
--
$charをグローバル変数にしたいときは、前のvarを取り除くだけです。
【変数宣言の種類】
変数宣言には、一般的なvar以外に、let、constがあります。トドロは、var宣言すらほとんど使わないので、良い説明は下記サイトにお任せしますね。
https://asciidwango.github.io/js-primer/basic/variables/