+ All Categories
Home > Documents > JavaScript 1 - Keio University...(ECMAScript 2015の新機能)...

JavaScript 1 - Keio University...(ECMAScript 2015の新機能)...

Date post: 25-Sep-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
26
JavaScript 演習1
Transcript
Page 1: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

JavaScript 演習1

Page 2: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

JavaScript 演習の概要

• 1回目

– JavaScriptの概要

– 開発環境

– JavaScriptの基本文法1

• 2回目

– JavaScriptの基本文法2

– イベント処理1

• 3回目

– イベント処理2

• 4回目

– DOM (Document Object Model)

2

Page 3: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

JavaScript 演習1の内容

• JavaScriptとは

• JavaScriptの開発環境整備と書き方

• alertメソッド

• コンソールへの出力方法

• 演習問題1−1

• 変数・データ型

• 演算子,console.assertメソッド

• 関数

• 演習問題1−2

• document.body.innerHTML

• 演習問題1−3

3

Page 4: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

JavaScript(言語)とは

• 情報システムのプログラミング→ソースコード記述,外部ファイル保存,

コンパイル,テスト,デバッグ...→大変な作業

• もっと手軽なプログラミング→特別な言語処理系は不要!→Webブラウザだけで実行可能

(実際は,HTMLファイル内or外部ファイルとして記述保存)

4

Page 5: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

1990年代:JavaScript は不遇

• Java言語とは全く異なる,簡易型プログラミング(スクリプト=台本)言語。コンパイラではなくインタープリタ。

• オブジェクト指向型スクリプト言語。C言語に似た手続き型言語のようなスタイルで書かれる。

• NetScape社でサーバ負荷軽減のために開発。

• 90年代後半は,セキュリティの脆弱性,ブラウザによって挙動が異なるなど,問題の多かった言語

5

Page 6: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

2005-: JavaScriptは脚光

• 2000年頃から– AmazonやGoogleといった企業が採用

• 2005年 Google Mapの登場により状況が一変– ユーザ満足度(ユーザエクスペリエンス)を重視し

たリッチクライアントに対応したWebサイトが続々登場

– サーバからクライアントへの転送データ量の減少– 直感的な操作が可能

• Gmail, Googleサジェスト, Amazon Web Service, • ドラッグアンドドロップ, タブページ, Widgetなどなど

6

↑入力値チェックなどにも利用

Page 7: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

Ajax (Asynchronous JavaScript and XML)

Webアプリケーションモデル

従来のWebアプリケーションモデル

Webサーバー

データベース、バックエンド処理、レガシーシステム

サーバーサイドシステム

ユーザーインターフェース

ブラウザー

Httpリクエスト

HTTP(s)通信

HTML+CSSデータ

ユーザーインターフェース

Ajaxエンジン

ブラウザー

データベース、バックエンド処理、レガシーシステム

WebまたはXMLサーバー

サーバーサイドシステム

XMLHttpリクエスト非同期制御

XMLデータHTTP(s)通信

HTML+CSSデータJavaScript

コール

ブラウザーによってAjaxエンジン自体や、

呼び出し方法が異なる

二重構造

非同期実現

Page 8: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

クライアント

サーバー

クライアント

サーバー

従来のWebアプリ(同期→ユーザが待たされる)

Ajax Webアプリ(非同期→ユーザが快適)

ユーザー側の活動 ユーザー側の活動 ユーザー側の活動

システム処理 システム処理

データ送信

データ送信

データ送信

データ送信

クライアント側処理

データ送信

データ送信

データ送信

データ送信

ユーザー側の活動

入力 表示 入力 入力 入力表示 表示 表示

データ送信

待ち時間がある

待ち時間がない

サーバーサイドの処理 サーバーサイドの処理サーバーサイドの処理 サーバーサイドの処理

時間軸 ▶

Ajaxエンジンが通信を担当する

8

Page 9: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

ECMAScript 2015 (ES6)

• ECMAScript 2015

– 2015年6月にリリース

– クラス,モジュール,let, constなど様々な機能が追加

– http://www.ecma-international.org/ecma-262/6.0/

– 参考Webサイト

• http://es6-features.org/

• http://exploringjs.com/

• ECMAScript6 compatibility table

– https://kangax.github.io/compat-table/es6/

• 最新版は2017年6月に公開されたECMAScript2017

9

Page 10: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

HTMLとCSSとJavaScriptの違い

• HTML→Webページの骨格のみを担当。表現力は紙の文書と同程度。

• CSS→Webページのデザインを担当。通常はHTMLと組み合わせて用いる。

• JavaScript→Webページを動的なものにする。通常はHTMLと組み合わせて用いる。

JavaScript

CSS

JavaScript

CSS

HTML

外部ファイル

10

Page 11: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

JavaScript開発環境• Webブラウザ: Google Chrome

• テキストエディタ: Visual Studio Code• https://code.visualstudio.com/download

– ドキュメント

• https://code.visualstudio.com/docs

• http://www.atmarkit.co.jp/ait/articles/1507/10/news028.html

11

Page 12: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

Visual Studio Code お薦めショートカットショートカットキー 説明

Ctrl + P 指定したファイルに移動

Ctrl + Shift + P コマンド・パレット(全機能が一覧できる)を表示(?でヘルプ)

Ctrl + Tab / Ctrl + Shift + Tab 最近利用したファイルに移動

Ctrl + 左クリック リンク先(JSファイル,CSSファイル,変数,関数など)を開く

Ctrl + Shift + O シンボル(変数や関数など)に移動

F12 変数や関数の定義場所に移動

F2 シンボル名(変数名,関数名,ファイル名など)を変更

Ctrl + O / Ctrl + S ファイルを開く /ファイルを保存

Ctrl + 1 / Ctrl + 2 / Ctrl + 3 分割したエディタを左から順番にフォーカス

Ctrl + ¥ / Ctrl + W エディタを分割 / エディタを閉じる

Ctrl + F 開いているファイル内の検索

Ctrl + Shift + F フォルダ内のファイルを対象に検索

Ctrl + H 開いているファイル内の文字列置換

Shift + Alt + F コードをフォーマット

F8 / Shift + F8 次(前)のエラー・警告に移動

12

Page 13: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

JavaScriptコンソール起動方法13

Page 14: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

JavaScriptコンソール起動方法14

Page 15: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

JavaScriptの書き方

• HTMLファイル内に書く方法– <head>タグ内に以下のように記述

– ex1.html

15

<script><!--

ここにスクリプトを書く//--></script>

• 別のテキストファイルに書く方法

• ex2.html, js/ex2.js

<script src="ファイル名.js"></script>

Page 16: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

alertメソッド

• ポップアップウィンドウに指定したメッセージを表示するメソッド

• 正式にはwindow.alertだが,「window.」は省略可能

16

alert ( ‘表示するテキスト’ ) ;+ + + +

alert(‘Hello, World!’);

Page 17: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

コンソールへの出力方法

• デバッグ用のコンソール出力メソッドを提供

– JavaのSystem.out.printlnメソッドに相当

– Rubyのputsメソッドに相当

• Filterアイコンからエラー,警告,メッセージ(情報),ログの表示切替が可能

• 通常は,console.logを用いれば良い

17

consoleオブジェクトのメソッド 説明

console.log(message) メッセージをコンソールに出力

console.info(message)情報アイコン付きでメッセージをコンソールに出力

console.warn(message)警告アイコン付きでメッセージをコンソールに出力

console.error(message)エラーアイコン付きでメッセージをコンソールに出力

Page 18: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

演習問題1−1

• js/ex2.jsのalertとconsole.logメソッドの引数を修正して、動作を確認してみてください

–例: 「Hello, World!」を「こんにちは」に変更してみるなど

18

Page 19: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

変数・データ型

• 変数宣言はvarを用いていた(非推奨)

– 変数の長さは1文字以上

– 変数の最初の文字に使えるのは,英字,アンダースコア(_),ドル記号($)

• ○ $total,_firstName,top100

– 空白文字と(_と$以外の)特殊文字は使えない

• × 5to10,first name,#total,world!

• ECMAScript6からはletとconstが追加された

– let: 再宣言不可

– const: 再宣言と再代入不可

– 変数のスコープがvarと異なる

– 可能であれば,varよりもletとconstを利用すべき

19

Page 20: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

変数・データ型

• 基本データ型は数値、文字列、論理値の3種類

– ex3.html, js/ex3.js

• 数値

• 文字列

• 論理値

20

let num = 1;console.log(num);num = 3.14console.log(num);

const message = ‘Hello, World!’;console.log(message);

let bool = true;console.log(bool);bool = false;console.log(bool);

Page 21: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

演算子(よく使われるもの)

• ex4.html,ex5.html,ex6.html,

js/ex4.js, js/ex5.js, js/ex6.js

• 算術演算子

– +(加算),-(減算),*(乗算),/(除算),%(余剰)

– ++(インクリメント),--(デクリメント)

• 論理演算子

– &&(論理積),||(論理和),!(否定)

• 比較演算子

– <(小なり),<=(以下),>(大なり),>=(以上)

– ==(等しい),!=(等しくない)

• 代入演算子

– =(代入),+=(加算),-=(減算),*=(乗算)

– /=(除算),%=(余剰)

21

p q p && q

true true true

true false false

false true false

false false false

p q p || q

true true true

true false true

false true true

false false false

p !p

true false

false true

Page 22: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

関数

• 再利用可能なJavaScriptコードのかたまりに名前をつけたもの• ex7.html, js/ex7.js

22

function 関数名(引数){

定義内容return 戻り値;

}

関数名(引数);let num = 関数名(引数);

定義方法

呼び出し方法

Page 23: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

演習問題1−2

1. js/ex7.jsに二つの数値を引数にとって、乗算をした結果を返す関数mulを追加してください

2. mul関数にnum1とnum2を引数として渡して、num変数にその結果を格納して、コンソールに出力するプログラムを作成してください

23

Page 24: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

document.body.innerHTML24

• 要素.innerHTML: 要素内のHTML文書を置き換える

• ex8-1.html, js/ex8-1.js, css/ex8.css

document.body.innerHTML = '<h1>document.body.innerHTML</h1>';const str = 'Hello, World';document.body.innerHTML += '<p>' + str + '</p>';document.body.innerHTML += "<p style='color: red;'>" + str + "</p>";

Page 25: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

文字列への変数の埋め込み(ECMAScript 2015の新機能)

• バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋め込むことが可能になった

– ex8-2.html, js/ex8-2.js, css/ex8.css

25

const str = 'Hello, World';document.body.innerHTML += `<p>${str}</p>`;document.body.innerHTML += `<p style='color: red;'>${str}</p>`

const str = 'Hello, World';document.body.innerHTML += '<p>' + str + '</p>';document.body.innerHTML += "<p style='color: red;'>" + str + "</p>";

Page 26: JavaScript 1 - Keio University...(ECMAScript 2015の新機能) •バッククォートで文字列を囲うことで,文字列中の改行や${変数名}で,変数を埋 め込むことが可能になった

演習問題1−3

1. js/ex8-2.jsのstr変数やdocument.body.innerHTMLの内容を修正して動作を確認してください

2. css/ex8.cssに.style1をコピーして、.style2を追加し、適当なフォントのサイズや色を指定してください

3. js/ex8-2.jsにname変数を追加して自分の名前を格納し、「私の名前は〜です。」と.style2をスタイルシートのクラスとして指定して表示してください

26


Recommended