Step.4 - 関数の作り方

同じスクリプトを何回も処理させる場合は、関数化するのが最適です。

Step テーマ

実行例

ただいまの時刻は、 です
くどいですが、ただいまの時刻は、 です


リスト

<script type="text/javascript"><!--
function myFunc(){
}
// --></script>
ただいまの時刻は、
<script type="text/javascript"><!--
myFunc();
// --></script>です<br>
くどいですが、ただいまの時刻は、
<script type="text/javascript"><!--
myFunc();
// --></script>です<br>


サンプルだけの HTMLは こちらへ

説明

Step.2 や Step.3 のスクリプトは、一回処理をすれば、もう用済みになります。
しかし、何回もそのスクリプトを処理させたい場合が、これからのステップで度々でてきます。

再び、同じスクリプトを処理させたい場合は、スクリプトを関数化すると解決します。

今回のサンプルは Step.3 で説明した日付を表示するスクリプトです。このスクリプトを関数化して2回、日付を表示してみました。つまりページ内に2箇所日付を表示させます。

これまでのステップで、括弧()が付いた変数らしきものがありましたよね。getFullYear() とか…。
それが、『 関数 』 です。かっこよく言えば、『 メソッド 』 といいます。

括弧 () の付いていないものが『 変数 』。例えば、Step.2 で出てきた、navigator.appNameappName は、かっこよく言えば、『 プロパティ 』 といいます。
navigator は、appName の親分であり、 『 オブジェクト 』 といいます。
オブジェクトは、appName とか、getFullYear( ) のような、変数(プロパティ) や 関数(メソッド) の部品をたくさん持っています。

全部が全部、そうでは無いのですが、とりあえず、そんな呼び名です。


● 変数(プロパティ)とは


● 関数(メソッド)とは


● オブジェクトとは


変数も関数も、JavaScript が用意しているものもあれば、自分で作ることもできます。当講座では JavaScript が用意しているものなのか、自分で作ったものなのかを わかりやすくするために、自分でつくった変数や関数は、頭に「my」を付けています。


● 関数の定義

このステップで、自作関数をつくってみます。

関数名を myFunc( ) という名前にして、メインはそれを呼ぶだけのスクリプトになっています。
<script type="text/javascript"><!--
myFunc( ) ;
// --></script>



getFullYear()『年』を取得して返してくれましたが、myFunc() は、現在時刻を表示してくれるという関数を自分で作ったわけです。


関数定義は、
<script type="text/javascript"><!--
function 関数名()
{
}
// --></script>

と、function 関数名(){ ・・・・ } の括弧 { } の中に処理するスクリプトを入れ込みます。

<script type="text/javascript"><!--
function myFunc(){
}
// --></script>

この function で記述したスクリプトは、あくまでも 関数定義 ですので、ここでは実行されません。

サンプルのように myFunc(); と呼んであげて、はじめて実行されます。
<script type="text/javascript"><!--
myFunc();
// --></script>

もちろん、同じ関数名を2つ以上定義することは出来ません。

<script type="text/javascript"><!--
function myFunc(){
}
function myFunc(){
}
// --></script>


<script type="text/javascript"><!--
myFunc();
// --></script>

これでは、どっちの myFunc() を実行すれば良いかわかりませんよね。変数も同じことです。当講座の各ステップのサンプルは同じ関数名や変数名を使い回しているので、安易に1つのページに複数のステップのサンプルを貼り付ければ当然「エラー」が発生するか、動きがおかしくなりますので 自分なりに名前を変更しつつ、お使いください。。

また、関数を定義したスクリプトは、<HEAD> ~ </HEAD> タグ内に埋め込むのが一般ですが、<BODY> ~ </BODY> タグ内に書いても動きます。
その際は、関数定義の記述が「先」、呼ぶのは その「後」に記述しないと、「そんな関数ないよエラー」が出てしまいます。

▲TOP

値を返す関数

今回のサンプルの関数は、「日時を表示する」という機能の関数をつくりましたが、それを「日時を返す」という関数にするには、以下のようになります。

<script type="text/javascript"><!--
function myFunc(){
}
// --></script>

ただいまの時刻は、
<script type="text/javascript"><!--
document.write( myFunc() );
// --></script>
です

表示する から 返す に変更しただけです。
document.write( myMess );
return myMess;

処理が終わった最後に return で 返す値を指定してあげます。
これで、自作 myFunc() 関数は、日時の文字列を返す関数へと生まれ変わりました。

返すだけで、表示する機能はなくしましたので、表示する際は、
document.write( myFunc() ); で表示します。

もちろん、
myDate = myFunc();
のように、変数にセットもできるようになりました。

▲TOP

関連参考リンク

▲TOP

余談

当講座の関数定義のサンプルは、<BODY> ~ </BODY> タグ内に記述するイメージで書いています。

当講座の、Step.1 ~ Step.99 までは 1998年 ~ 2002年に書いたものです。OSも Windows 95 ~ Windows 98 の時代であり、当時の Windows標準搭載のHTML エディタ 『FrontPage Express』が、<HEAD> ~ </HEAD> タグにスクリプトを埋め込んでも、ファイルを保存、もしくは、読み込んだ時点で、<BODY> ~ </BODY> タグの中に、お引越しさせてしまうのでした。
要するに、市販のエディタを買う金がなかったのでした〜。わはは〜。

そして、HTMLエディタは捨てて、メモ帳で修正している今日この頃です(2013年現在)。いまだ、お金がないのでした〜。ぐはは〜。
▲TOP