関数(クロージャ)
概要
複数の変数に対して、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