| 情報学部 | 菅沼ホーム | 目次 | 索引 | 
<SCRIPT TYPE="text/javascript"> <!-- ここに,JavaScript のプログラム //--> </SCRIPT>
使用例1( use1.htm )
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>文書内記述</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07		<LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08	</HEAD>
09	<BODY CLASS="white">
10		<H1 CLASS="center">文書内記述</H1>
11		<SCRIPT TYPE="text/javascript">
12			document.write("JavaScript によって出力<BR>\n");
13			alert("文書内記述");
14			let w = window.open("", "", "width=300, height=100");
15			w.document.open();
16			w.document.write('<HTML>\n');
17			w.document.write('	<HEAD>\n');
18			w.document.write('		<TITLE>新しい Window</TITLE>\n');
19			w.document.write('	</HEAD>\n');
20			w.document.write('	<BODY>\n');
21			w.document.write('		新しい Window の生成も可能<BR>\n');
22			w.document.write('	</BODY>\n');
23			w.document.write('</HTML>\n');
24			w.document.close();
25		</SCRIPT>
26	</BODY>
27	</HTML>
				使用例2( use2.htm )
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>文書内記述(関数)</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07		<LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08		<SCRIPT TYPE="text/javascript">
09			function func()
10			{
11				alert("文書内記述(関数)");
12			}
13		</SCRIPT>
14	</HEAD>
15	<BODY CLASS="white">
16		<H1 CLASS="center">文書内記述(関数)(<SPAN onClick="func()">ここをクリック</SPAN>)</H1>
17	</BODY>
18	</HTML>
				
01 <!DOCTYPE HTML> 02 <HTML> 03 <HEAD> 04 <TITLE>外部ファイル</TITLE> 05 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> 06 <META NAME=viewport CONTENT="width=device-width, initial-scale=1"> 07 <LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css"> 08 <SCRIPT TYPE="text/javascript" SRC="control.js"></SCRIPT> 09 </HEAD> 10 <BODY CLASS="white"> 11 <H1 CLASS="center">外部ファイル(<SPAN onClick="func()">ここをクリック</SPAN>)</H1> 12 </BODY> 13 </HTML>
function func()
{
	alert("外部ファイル");
}				
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>要素内記述</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07		<LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08	</HEAD>
09	<BODY CLASS="white">
10		<H1 CLASS="center">要素内記述</H1>
11		SPAN 要素  <SPAN onClick="JavaScript: alert('alert 1');alert('alert 2')">ここをクリック</SPAN><BR><BR>
12		A 要素  <A HREF="JavaScript: alert('alert 2');alert('alert 1')">ここをクリック</A>
13	</BODY>
14	</HTML>
				
let x1 = 12345; let x2; var y1 = 12.5; var y1; z1 = 12; z1;
±1.7976931348623157 × 10308
-253(-9,007,199,254,740,992) ~ 253(9,007,199,254,740,992)
let x = "<SPAN STYLE='red'>赤</SPAN>"
+ : 加算 : どちらかが文字列の場合は,文字列の結合 - : 減算 * : 乗算 / : 除算 : 整数同士の割り算であっても,小数点以下が切り捨てられません. % : 余り : 被除数,除数は共に制限はありません.除算の結果を整数として,その余りを結果とします. 例えば,7.3 % 2.3 の結果は 0.4 となります( 7.3 / 2.3 の演算結果は,3 余り 0.4 ). = : 代入 ++ : インクリメント演算子( 1 だけ増加) -- : デクリメント演算子( 1 だけ減少)
> より大きい a > b 式 a の値が式 b の値より大きいとき真 < より小さい a < b 式 a の値が式 b の値より小さいとき真 >= 以上 a >= b 式 a の値が式 b の値以上のとき真 <= 以下 a <= b 式 a の値が式 b の値以下のとき真 == 等しい a == b 式 a の値と式 b の値が等しいとき真 === 等しい a === b 式 a の値と式 b の値が等しいとき真(型の変更を行わない.例えば,「 true == 1 」は真となるが,「 true === 1 」は偽となる) != 等しくない a != b 式 a の値と式 b の値が等しくないとき真 !== 等しくない a !== b 式 a の値と式 b の値が等しくないとき真(型の変更を行わない.例えば,「 true == 1 」は真となるが,「 true === 1 」は偽となる) || 論理和 x || y 式 x が真か,または,式 y が真のとき真 && 論理積 x && y 式 x が真で,かつ,式 y が真のとき真 ! 否定 ! x 式 x が偽のとき真
| 論理和 x | y 対応するビットのいずれかが 1 のとき真. & 論理積 x & y 対応するビットの双方が 1 のとき真 ^ 排他的論理和 x ^ y 対応するビットが異なるのとき真 ~ 1の補数 ~ x ビット毎に 1 と 0 を反転する << 左にシフト x << 3 3 ビット左にシフト.x を 23 倍することに相当. >> 右にシフト x >> 3 3 ビット右にシフト.x を 23 で割ることに相当. >>> 右にシフト x >>> 3 3 ビット右にシフト( C++ における符号無しの整数を右シフトする場合に相当).
new let obj = new Date() オブジェクトの生成 delete delete obj オブジェクトの削除(配列の要素も可能) 例 delete a[2]; delete['xyz']; // 連想配列 typeof() typeof(x) 変数などの型 in 数値 in obj オブジェクト内に指定した値が含まれていれば真 例 let a = new Array(1,2,3); document.write(5 in a);
if (論理式) { 文1(複数の文も可) } else { 文2(複数の文も可) }
if (論理式) { 文1(複数の文も可) } else if (論理式) { 文2(複数の文も可) } ・・・ else { 文n(複数の文も可) }
switch (式) { [case 定数式1 :] [文1] [case 定数式2 :] [文2] ・・・・・ [default :] [文n] }
for (初期設定; 繰り返し条件; 後処理) {
	文(複数の文も可)
}
   ・・・					
while (繰り返し条件) {
	文(複数の文も可)
}					do { 文(複数の文も可) } while (繰り返し条件) ;
for (変数名 in オブジェクト名) { 文(複数の文も可) }
let x1 = new Array(); // 要素数は未定 let x2 = new Array(100); // 要素数が100の配列 let x3 = new Array(1, 2.3, "abc"); // 初期設定も実施 let x4 = [1, 2.3, "abc"]; // 上と同様
let v1 = new Array(2); v1[0] = new Array(10, 20, 30); v1[1] = new Array(40, 50, 60);
let color = {'red' : '赤', 'blue' : '青'};
let color = {red : '赤', blue : '青'};   // 上と同様				let color = new Array(); color['red'] = '赤'; color['blue'] = '青';
function 関数名 (引数, ・・・) { 処理 }
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>関数(様々な引数)</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07		<LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08		<SCRIPT TYPE="text/javascript">
09					// クラス Complex
10			class Complex {
11						// コンストラクタ
12				constructor(a, b)
13				{
14					this.x = a;
15					this.y = b;
16				}
17			}
18					// 関数 func
19			function func(a, b, c, d, e = 5)
20			{
21				d.x  = -100;
22				a   += 10;
23				c[0] = 30;
24				return (a + b + e);   // 計算結果を返す
25			}
26		</SCRIPT>
27	</HEAD>
28	<BODY CLASS="white">
29		<H1 CLASS="center">関数(様々な引数)</H1>
30		<SCRIPT TYPE="text/javascript">
31			let x = 1;
32			let y = 2;
33			let z = new Array(10, 20);
34			let w = new Complex(100, 200);
35			document.write("関数を呼ぶ前:<BR>\n");
36			document.write("   x:" + x + " y:" + y + " z:" + z[0] + "," + z[1] + " w.x:" + w.x + "<BR>\n");
37			let r = func(x, y, z, w);
38			document.write("関数を呼んだ後:<BR>\n");
39			document.write("   x:" + x + " y:" + y + " z:" + z[0] + "," + z[1] + " w.x:" + w.x + " r:" + r + "<BR>\n");
40		</SCRIPT>
41	</BODY>
42	</HTML>
			
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>関数(関数名)</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07	</HEAD>
08	<BODY>
09		<SCRIPT TYPE="text/javascript">
10			function add(s1, s2) {
11				let s = s1 + s2;
12				return s;
13			}
14	
15			function sub(s1, s2) {
16				let s = s1 - s2;
17				return s;
18			}
19	
20			function add_sub(fun, s1, s2) {
21				let s = fun(s1, s2);
22				return s;
23			}
24	
25			document.write("add(2,3) " + add(2,3) + "<BR>\n");
26	
27			let kasan = add;
28			document.write("kasan(2,3) " + kasan(2,3) + "<BR>\n");
29	
30			document.write("add_sub(add, 2, 3) " + add_sub(add, 2, 3) + "<BR>\n");
31			document.write("add_sub(sub, 2, 3) " + add_sub(sub, 2, 3) + "<BR>\n");
32		</SCRIPT>
33	</BODY>
34	</HTML>
			
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>オブジェクト</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07		<LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08		<SCRIPT TYPE="text/javascript">
09						// Complex オブジェクト(プロパティ)
10			function Complex(a, b)
11			{
12				this.x = a;
13				this.y = b;
14				this.r = this.rep();
15			}
16						// Complex オブジェクト(メソッド add )
17			Complex.prototype.add = function(b)
18			{
19				let cp = new Complex(this.x + b.x, this.y + b.y);
20				return cp;
21			}
22						// Complex オブジェクト(メソッド rep )
23			Complex.prototype.rep = function()
24			{
25				let r = "(" + this.x + " , " + this.y + ")";
26				return r;
27			}
28		</SCRIPT>
29	</HEAD>
30	<BODY CLASS="white">
31		<H1 CLASS="center">新規オブジェクトの定義と利用</H1>
32		<SCRIPT TYPE="text/javascript">
33			let cp1 = new Complex(1, 2);
34			let cp2 = new Complex(3, 1);
35			let cpa = cp1.add(cp2);   // cp2.add(cp1) でも同じ
36			document.write("cp1 + cp2 = (" + cpa.x + " , " + cpa.y + ")<BR>\n");
37			document.write(cp1.r + " + " + cp2.r + " = " + cpa.r + "<BR>\n");
38		</SCRIPT>
39	</BODY>
40	</HTML>
			
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>クラス</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07		<LINK REL="stylesheet" TYPE="text/css" HREF="../../master.css">
08		<SCRIPT TYPE="text/javascript">
09					// クラス Complex
10			class Complex {
11				static name = "Complex Number";
12				#y = 0;
13						// コンストラクタ
14				constructor(a, b)
15				{
16					this.x = a;
17					this.#y = b;
18					this.r = this.rep();
19				}
20						// メソッド add
21				add = function(b)
22				{
23					let cp = new Complex(this.x + b.x, this.#y + b.#y);
24					return cp;
25				}
26						// メソッド sub
27				static sub = function(a, b)
28	//			static sub = function(b)
29				{
30					let cp = new Complex(a.x - b.x, a.#y - b.#y);
31	//				alert("name: " + this.name + " x: " + this.x);   // x に対しては,undefined
32	//				let cp = new Complex(this.x - b.x, this.#y - b.#y);
33					return cp;
34				}
35						// メソッド rep
36				rep = function()
37				{
38					let r = "(" + this.x + " , " + this.#y + ")";
39					return r;
40				}
41			}
42					// クラス Real
43			class Real extends Complex {
44				static name = "Real Number";
45						// コンストラクタ
46				constructor(a)
47				{
48					super(a, 0);
49					this.r = this.rep();
50				}
51						// メソッド rep
52				rep = function()
53				{
54					return this.x;
55				}
56			}
57		</SCRIPT>
58	</HEAD>
59	<BODY CLASS="white">
60		<H1 CLASS="center">クラスの定義と利用</H1>
61		<SCRIPT TYPE="text/javascript">
62					// Complex
63			document.write("  ***" + Complex.name + "***<BR>\n");
64			let cp1 = new Complex(1, 2);
65			let cp2 = new Complex(3, 1);
66			let cpa = cp1.add(cp2);   // cp2.add(cp1) でも同じ
67			let cps = Complex.sub(cp1, cp2);
68	//		document.write("cp1 + cp2 = (" + cpa.x + " , " + cpa.#y + ")<BR>\n");   // エラー
69			document.write(cp1.r + " + " + cp2.r + " = " + cpa.r + "<BR>\n");
70			document.write(cp1.r + " - " + cp2.r + " = " + cps.r + "<BR>\n");
71					// Real
72			document.write("  ***" + Real.name + "***(Complex.name: " + Complex.name + ")<BR>\n");
73			let re1 = new Real(10);
74			let re2 = new Real(20);
75			let rea = re1.add(re2);   // re2.add(re1) でも同じ
76			let res = Real.sub(re1, re2);
77			document.write(re1.r + " + " + re2.r + " = " + rea.x + "<BR>\n");
78			document.write(re1.r + " - " + re2.r + " = " + res.x + "<BR>\n");
79		</SCRIPT>
80	</BODY>
81	</HTML>
			
		
01	<!DOCTYPE HTML>
02	<HTML>
03	<HEAD>
04		<TITLE>変数の有効範囲(スコープ)</TITLE>
05		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
06		<META NAME=viewport CONTENT="width=device-width, initial-scale=1">
07		<SCRIPT TYPE="text/javascript">
08			/****************************/
09			/* 変数の有効範囲(スコープ) */
10			/*      coded by Y.Suganuma */
11			/****************************/
12	
13			str = "";
14			z   = 30;
15	
16			/************************/
17			/* オブジェクト Example */
18			/************************/
19			function Example() {  // class Example {
20				this.x = 1000;   // constructor() { this.x = 1000; }
21			}
22	
23			Example.prototype.sub = function() {   // sub = function() {
24				str += "sub member( x ) " + this.x + "\n";
25			}
26	
27			/************/
28			/* 関数 run */
29			/************/
30			function run() {
31						// ブロック
32				let x = 10;
33				var a = 100;
34				if (x > 5) {
35	//				str  += "then block x " + x + "\n";   // 許されない
36					str  += "then block a " + a + "\n";
37					let x = 15;
38					if (x > 7) {
39						let x = 20;   // OK
40						str  += "then block block x " + x + "\n";
41					}
42					var a = 200;
43					let b = -100;
44					var y = 20;
45					str  += "then block x " + x + "\n";
46					str  += "then block a " + a + "\n";
47					str  += "then block b " + b + "\n";
48					str  += "then block y " + y + "\n";
49				}
50				else {
51					str += "else block x " + x + "\n";
52					str += "else block a " + a + "\n";
53					x    = -15;
54					str += "else block x " + x + "\n";
55				}
56	//			let x = 100;   // 許されない
57	//			var a = 300;   // 許される
58	//			str += "w " + w + "\n";   // 許されない
59				sub();
60				str += "w " + w + "\n";   // グローバル変数
61				str += "x " + x + "\n";
62				str += "a " + a + "\n";
63	//			str += "b " + b + "\n";   // 許されない
64				str += "y " + y + "\n";   // ブロック内の定義が有効
65				                          // 最初の x が 1 の時は undefined
66						// オブジェクト
67				let ex = new Example();
68				ex.sub();
69				str += "member( x ) " + ex.x + "\n";
70					//
71					// 結果の設定
72					//
73				document.getElementById("tx").value = str;
74			}
75	
76			/************/
77			/* 関数 sub */
78			/************/
79			function sub()
80			{
81	//			str  += "   sub x " + x + "\n";   // 許されない
82				let x = 40;
83				str  += "   sub x " + x + "\n";
84				str  += "   sub z " + z + "\n";   // グローバル変数
85				w     = 50;
86			}
87		</SCRIPT>
88	</HEAD>
89	<BODY  STYLE="font-size:130%">
90		<P STYLE="text-align:center">
91			<INPUT TYPE="button" VALUE="OK" onClick="run()" STYLE="font-size:90%"><BR><BR>
92			<TEXTAREA TYPE="text" ID="tx" COLS="30" ROWS="10" STYLE="font-size: 100%"></TEXTAREA>
93		</P>
94	</BODY>
95	</HTML>
			
01	x = 10;
02	function run() {
03		alert(x);   // undefined
04		var x = 20;
05		alert(x);
06		var x = 30;
07		alert(x);
08	//	let x = 40;  // 定義済みエラー
09		・・・・・
10	}				
01	x = 10;
02	function run() {
03	//	alert(x);   // 未定義エラー
04		let x = 20;
05		alert(x);
06	//	let x = 30;  // 定義済みエラー
07	//	var x = 30;  // 定義済みエラー
08	}				
01	x = 10;
02	function run() {
03		alert(x);
04		x = 20;
05		alert(x);
06	}				
// 32 行目の x が 10 のとき 35 then block a 100 39 then block block x 20 44 then block x 15 45 then block a 200 46 then block b -100 47 then block y 20 82 sub x 40 83 sub z 30 59 w 50 60 x 10 61 a 200 63 y 20 // 32 行目の x が 1 のとき 50 else block x 1 51 else block a 100 53 else block x -15 82 sub x 40 83 sub z 30 59 w 50 60 x -15 61 a 100 63 y undefined
sub member( x ) 1000 member( x ) 1000
| 情報学部 | 菅沼ホーム | 目次 | 索引 |