グローバル変数と ローカル変数
今度はグローバル変数とローカル変数について学習してみましょう。
f(x)って知ってますか、知らなくてもいいです。
同じ技能を何回も使うときはその技能を関数を造って使います。
次は関数の作り方です。
関数の造り方
function 関数の名(){
}
上のソースが関数のつくりかたです。
例え 関数の名をharoとすると下のよう書きます。
function haro(){
}
関数を造ったから今度は関数の呼び方法をみてみましょう。簡単です。
関数の呼び方
関数の名(); 例え上で造ったharo関数の呼び方は haro(); <== です.
では、ソースを入力してから結果をみてみましょう。
関数は Hello worldを出力する関数です。
function hello(){
document.write("Hello world");
}
下のソースは関数はあるけどその関数の呼びはないソースです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>coreasur - JavaScript</title>
<script>
function hello(){
document.write("Hello world");
}
</script>
</head>
<body>
</body>
</html>
結果
上のソースの結果には何も出てないです。関数の呼びがないからですね。
では次は関数の呼びがあるソースです。
hello();
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>coreasur - JavaScript</title>
<script>
function hello(){
document.write("Hello world");
}
hello(); //関数の呼び
</script>
</head>
<body>
</body>
</html>
結果
上のソースの結果を見るとhello関数が作動してHello worldという文字列が出力されます。
グローバル変数、ローカル変数について勉強するため 関数について勉強しした。では本格的に。。。
グローバル変数、ローカル変数
var
varは 変数を宣言するときに使います。
var 変数名 = バリュー
varを付けなくてもいいです。
まずグローバル変数は全域で使える変数であり、ローカル変数は関数の内だけ使える変数です。
理解しやすくCSSを利用し地役を区別しますね。
<html>
<head>
<title>coreasur - JavaScript</title>
<script>
function hello(){
document.write(hello);
</head>
<body>
</body>
</html>
赤いエリアはグローバル変数の領域です。 ^-^
青いエリアはローカル変数の領域です。赤いエリアの外では使えません。
上のソースを見るだけではよくわからないんでソースをプレーしてみてみましょう。
下のソースはグローバル変数名は glo_varで宣言し、ローカル変数は local_varで宣言しました。そして関数の外で変数glo_varを出力する例です。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>coreasur - JavaScript</title>
<style type="text/css">
</style>
<script type="text/javascript">
glo_var = 10;
function hello(){
local_var = 20;
}
document.write(glo_var);
</script>
</head>
<body>
</body>
</html>
結果
上のソースの結果を見ると変数 glo_varのバリューは10ですね。
では、上のソースで 出力文の変数をローカル変数なlocal_varにして出力できるかどうかみてみましょう。
結果はもちろんローカル変数だから、出力出来ませんが、でも目でみてみましょう。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>coreasur - JavaScript</title>
<style type="text/css">
</style>
<script type="text/javascript">
glo_var = 10;
function hello(){
local_var = 20;
}
document.write(local_var);
</script>
</head>
<body>
</body>
</html>
結果
結果を見ると何も出てないですね。
関数の内で変数の前にvarを付けるのと付かないのは何が違うんでしょうか
関数の外でvarを付けるのと付けないのは関係なくグローバル変数ですが、
関数の内では違います。
ローカル変数の前にvarがあるとそのローカル変数は関数の内でだけ作動しますが、
ローカル変数お前にvarがないとその関数が一度呼ばれた以降ではグローバル変数になります。
では例を見て確認しましょう。
下の例はvar2が付けてない変数なlocal_var2変数を関数の外で出力する例です
varが付けてない変数は一度その関数を読んだたグローバル変数になります。下のソースはhello関数を呼ぶコードがないから結果は出力出来ません。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>coreasur - JavaScript</title>
<style type="text/css">
</style>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.min.js" ></script>
<script type="text/javascript">
glo_var = 10;
function hello(){
var local_var = 20;
local_var2 = 30;
}
document.write(local_var2);
</script>
</head>
<body>
</body>
</html>
結果
下のソースは上のソースにはない関数の呼びがあるソースです。だから local_var2変数はvarがついてないから関数を読んでからはグローバル関数になります。
そしてグローバル関数になったからバリューが出力できます。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>coreasur - JavaScript</title>
<style type="text/css">
</style>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.min.js" ></script>
<script type="text/javascript">
glo_var = 10;
function hello(){
var local_var = 20;
local_var2 = 30;
}
hello();
document.write(local_var2);
</script>
</head>
<body>
</body>
</html>
結果