Functionとかユーザー定義関数とかサブルーチンとかいろいろな言い方がありますが、あるまとまったルーチンを整理して書いておいて使うときにその都度呼び出すことができるのは大変有意義なことです。というのも無駄な処理や繰り返し処理などをできるだけ避けるという意味では、プログラムにはもう欠かすことのできない機構なのです。
jQueryではJavascriptと同様の定義方法でFunctionが利用できます。というか全く同じです。
jQueryのコード
jQueryのコード
jQueryのコード
PHPは純粋なプログラム言語ではないことから、変数と関数を分けて書きます。変数が$strというように$記号で表現しますが関数に関してはstrというように文字先頭には何も記号がありません。Javascriptの場合は変数も関数も先頭には記号が不必要です。これは基本的には変数と関数が同じ原理で作動していることを示しています。上記のコンストラクタはnewでもって変数(または関数)としてのchangetextに代入されます。この考え方は引数と返り値という関数の基本的な考え方に由来しているとも言えます。というのは、変数は何らかの値を代入する(引数)と、その値はメモリ上に保持されその都度呼び出して利用(返り値)することができます。変数の場合は引数と返り値が同じということになります。それに対して関数は何らかの値をその関数に代入(引数)すると変数と同様にメモリ上に保持されます。変数と違うのは何らかの処理を関数内で行い最終的にはその返り値を返すということです。もしその関数を呼び出す際には引数を元に処理された(おそらく)引数とは違った値を返り値として得ることになります。そういう意味では変数も関数も全く同様に引数と返り値のやりとりであるということができるわけです。Perlの場合は、$strという変数と&str()という関数という書き方をします。JavascriptとPHPの折衝という感じではありますが、Perlは、$buffer = $str; という書き方とともに $buffer = &str();という書き方をします。関数をあたかも変数のように扱います。
Javascriptの場合は、実に変数と関数の区別はもはやありません。上記の例では、var(変数) changetextにnew以下のコンストラクタオブジェクトを代入しています。
いやはや難しい話です。
jQueryではJavascriptと同様の定義方法でFunctionが利用できます。というか全く同じです。
Functionで引数を使う
引数がない場合
特に引数が必要ない場合は以下のように書けます。jQueryのコード
<script type="text/javascript">xhtmlソース
$(function(){
changetext(); //Functionを呼び出す
})
function changetext () { //定義されたFunction
$("p#first").text('CSSではなくて、テキストを変更する');
}
</script>
<p id="first">ひとつめのセンテンス</p>jQery自体がJavascriptなので当たり前といえば当たり前の話ですが、Functionも全く同様に機能します。
<p id="second">ふたつめのせんてんす</p>
引数がある場合
引数に何らかの値を定義してFunction内で利用することもできます。jQueryのコード
<script type="text/javascript">xhtmlソース
$(function(){ //本コード
var str='引数を利用できます。';
changetext(str);
})
function changetext (str) { //Functionで機能をまとめておく
$("p#first").text(str);
}
</script>
<p id="first">ひとつめのセンテンス</p>
<p id="second">ふたつめのせんてんす</p>
コンストラクタを利用する
JavascriptがJavascriptであることには何も変わりがないのでコンストラクタを利用することもできます。jQueryのコード
<script type="text/javascript">xhtmlソース
var changetext = new Function("str", '$("p#first").text(str);');//コンストラクタ
$(function(){ //本コード
var str='引数を利用できます。';
changetext(str);
})
</script>
<p id="first">ひとつめのセンテンス</p>余談です。どこの世界のプログラムのそうなのですが、関数はある種の変数の変形という見方をしています。これは言葉上ではちょっと不思議な感じがしますが数学的乃至プログラム的にはかなり自然なことです。しかしプログラム言語によっては様々な記述の仕方でもって変数と関数を分けたりしています。
<p id="second">ふたつめのせんてんす</p>
PHPは純粋なプログラム言語ではないことから、変数と関数を分けて書きます。変数が$strというように$記号で表現しますが関数に関してはstrというように文字先頭には何も記号がありません。Javascriptの場合は変数も関数も先頭には記号が不必要です。これは基本的には変数と関数が同じ原理で作動していることを示しています。上記のコンストラクタはnewでもって変数(または関数)としてのchangetextに代入されます。この考え方は引数と返り値という関数の基本的な考え方に由来しているとも言えます。というのは、変数は何らかの値を代入する(引数)と、その値はメモリ上に保持されその都度呼び出して利用(返り値)することができます。変数の場合は引数と返り値が同じということになります。それに対して関数は何らかの値をその関数に代入(引数)すると変数と同様にメモリ上に保持されます。変数と違うのは何らかの処理を関数内で行い最終的にはその返り値を返すということです。もしその関数を呼び出す際には引数を元に処理された(おそらく)引数とは違った値を返り値として得ることになります。そういう意味では変数も関数も全く同様に引数と返り値のやりとりであるということができるわけです。Perlの場合は、$strという変数と&str()という関数という書き方をします。JavascriptとPHPの折衝という感じではありますが、Perlは、$buffer = $str; という書き方とともに $buffer = &str();という書き方をします。関数をあたかも変数のように扱います。
Javascriptの場合は、実に変数と関数の区別はもはやありません。上記の例では、var(変数) changetextにnew以下のコンストラクタオブジェクトを代入しています。
いやはや難しい話です。



