関数(クロージャ)

概要

複数の変数に対して、1つのみの処理を行い、オブジェクトのように変数を保持したまま
処理を行う。

イメージとしてはシンプルなオブジェクトらしい

???意味がわからないと思われるが、私もわからないでのとりあえず処理だけ記述する

記述

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>テストサイト</title>
    </head>
    <body>
        <script type="text/javascript">
        //<![CDATA[
            // 10ずつ値を加算するクロージャ
            function test_func8(data1){
                // 初期値データを設定
                var test1 = data1;
 
                // 戻り値に関数を返却
                return function(){
                    test1 += 10;
                    return test1;
                }
            }
 
            // 任意の値を加算するクロージャ
            function test_func8b(data1){
                // 初期値データを設定
                var test1 = data1;
                var test2 = 1;
 
                // 戻り値に関数を返却
                return function(add){
                    test1 += add;
                    return test1;
                }
            }
 
 
            // 引数に関数名なしの関数の定義を設定することも可能
            var simpleobj1 = test_func8(100);
            document.write("simpleobj1_001=" + simpleobj1() + "<br />");
            document.write("simpleobj1_002=" + simpleobj1() + "<br />");
            document.write("simpleobj1_003=" + simpleobj1() + "<br />");
            document.write("simpleobj1_004=" + simpleobj1() + "<br />");
 
            document.write("<br />");
 
            var simpleobj2 = test_func8(10);
            document.write("simpleobj2_001=" + simpleobj2() + "<br />");
            document.write("simpleobj2_002=" + simpleobj2() + "<br />");
            document.write("simpleobj2_003=" + simpleobj2() + "<br />");
            document.write("simpleobj2_004=" + simpleobj2() + "<br />");
 
            document.write("<br />");
 
            var simpleobj3 = test_func8b(10);
            document.write("simpleobj3_001=" + simpleobj3(5) + "<br />");
            document.write("simpleobj3_002=" + simpleobj3(1) + "<br />");
            document.write("simpleobj3_003=" + simpleobj3(7) + "<br />");
            document.write("simpleobj3_004=" + simpleobj3(7) + "<br />");
 
            document.write("<br />");
            // 出力2
            document.write("Test Javascript2" + "<br />");
        //]]>
        </script>
    </body>
</html>
 
 
 

HTMLソース

simpleobj1_001=110
simpleobj1_002=120
simpleobj1_003=130
simpleobj1_004=140
 
simpleobj2_001=20
simpleobj2_002=30
simpleobj2_003=40
simpleobj2_004=50
 
simpleobj3_001=15
simpleobj3_002=16
simpleobj3_003=23
simpleobj3_004=30
 
Test Javascript2
 




最終更新:2012年02月16日 21:34