javascript超入門 基礎

28
JS勉強会 カリキュラム JAVASCRIPT言語の基礎 (基礎をちゃんと学ぶ) 重点をおさらい (具体例を交えながら) さらに勉強しながらサンプル作成 (ハンズオン形式) PHONEGAP BUILDを使って スマフォアプリとして完成させる サンプルは検討中 ゲームとか

Upload: tetsu6

Post on 25-May-2015

2.059 views

Category:

Technology


5 download

DESCRIPTION

勉強会「JavaScript超入門」の基礎編です。

TRANSCRIPT

Page 1: JavaScript超入門 基礎

JS勉強会 カリキュラム

๏ JAVASCRIPT言語の基礎(基礎をちゃんと学ぶ)

๏ 重点をおさらい(具体例を交えながら)

๏ さらに勉強しながらサンプル作成(ハンズオン形式)

๏ PHONEGAP BUILDを使ってスマフォアプリとして完成させる

サンプルは検討中ゲームとか

Page 2: JavaScript超入門 基礎

JavaScript言語の基礎

Page 3: JavaScript超入門 基礎

JAVASCRIPTの基礎๏ 実行環境

๏ 字句構造

๏ 変数と型

๏ 式と演算子

๏ 文

๏ オブジェクト

๏ 配列

๏ 関数

๏ クラス

๏ ブラウザでのJAVASCRIPT

๏ JQUERY

๏ モバイルライブラリ

スクリプトを実行する方法

コメント、予約語、行

値、宣言

代入、リテラル

IF文と論理式、FOR文、スコープ

オブジェクトリテラル、JSON

配列リテラルと操作

関数リテラルと呼出し

オブジェクト指向なので割愛?

WINDOW、DOM

DOM/スタイル定義、イベント、AJAX

いくつかライブラリ紹介

Page 4: JavaScript超入門 基礎

 実行環境

•HTML内に書いてブラウザで実行

•Chrome、Safariでのコンソール

•jsFiddle http://jsfiddle.net

•jsdo(by KAYAC) http://jsdo.it

さすがに面倒です

ちょっと試すには便利だが

さくっと試せるし機能も豊富 - テストするにはベスト

保存機能、コードコミュニティ機能があり日本製なのも魅力 - 最終的にモバイルアプリにする  ならこれがイチオシ

スクリプトを実行する方法

Page 5: JavaScript超入門 基礎

 字句構造(1)

// これはコメント

/* これもコメント */

/* * * 複数行コメント * 複数行コメント * */

コメントを書く理由:

他の人が見てもコードが読みやすい

自分のコードすら何をやっているかわからないことが多々あるので自分のためにもコメントが必要!

最近のエディタは便利ですコメントはちゃんと色分けされる

使ってはいけない予約語というものがありますがこれも覚えなくてもOK

コメント、予約語

Page 6: JavaScript超入門 基礎

 字句構造(2)

a = 1 b = 2

a = 1; b = 2;

a = 1; b = 2;

基本は一行が一文

ただし文はセミコロンによって区切られる

なるべくセミコロンを使って一行に一文で書きましょう

セミコロンと行

Page 7: JavaScript超入門 基礎

 変数と型

0 1000

3.1415

"abc"

var a = 1; var s = "abc"; var f = true;

 a = 2;

整数の値(数値の基本です)

実数の値(小数点を入れるだけ)

文字列

宣言 最初だけ「var」で宣言する (実はしなくても動くけど)

 他の言語では細かく宣言するものや Rubyのように@や@@を頭に置くものなど

値と宣言

変数名は大文字/小文字を区別します

Page 8: JavaScript超入門 基礎

 式と演算子(1)

1 + 1 2 - 1 2 * 2 4 / 2 5 % 2

2 * (1 + 2) 2 * (a + b)

"abc" + "def"

加算(=2)減算(=1)乗算(=4)除算(=2)剰余(あまり=1)

括弧で優先順位を変える(=6)もちろん変数も指定可

文字列において+は連結となる(="abcdef")

算術演算子

Page 9: JavaScript超入門 基礎

 式と演算子(2)

a = a + 1;

var s1 = "abc"; (s1を宣言し、”abc”を代入の意) var s2 = 'abc'; var s3 = ' "abc" is a string.';

var a1 = []; var a2 = [1,2,3];

代入演算子変数 a に a + 1 を入れるa ← a + 1 のイメージ

文字列リテラル プログラムでのリテラルとは コード内に値を直接書くこと (結構あいまいに使われている)

配列リテラル 複数の値をまとめて持つことができる

 他にもオブジェクト、関数リテラルなどがある

代入、リテラル

Page 10: JavaScript超入門 基礎

 式と演算子(3)

a = "文字列" + 5; a = "2" * "5";

型の確認方法: alert(typeof a);

"文字列5" という文字列になる整数で 10 になる

ダックタイピング: もしそれがアヒルのように歩き、 アヒルのように鳴くのなら、 それはアヒルである!

JavaScriptは式から判断して変数の型を動的に変更してくれますつまり「良きに計らって」くれます(時に迷惑なときもあります)

こういう場合はどうなる?

Page 11: JavaScript超入門 基礎

 文(1)

if (a == 1) { a = 0; b = 0; }

if (a == 1) a = 0;

if文はよく使います、基本です。 if (論理式) {  論理式が真なら実行する処理 }

「変数aが1ならばaとbに0を代入」

処理が一行なら中括弧はなしで可

==は値が等しいかを判定する演算子

論理式の結果は論理値で、真(true) か 偽(false)、はい か いいえ、オン か オフかなどで表される

IF文

Page 12: JavaScript超入門 基礎

 文(2)

if (a == 1) { a = 0; } else { a = 1; }

if (a == 1) { a = 10; } else if (a == 2) { a = 20; }

組み合わせて使用ができる

if (論理式1) {  論理式1が真なら実行する処理 } else if (論理式2) {  さらに2論理式が真なら実行する処理 } else {  全ての論理式が偽なら実行する処理 }

※ elseは最後に使います

  簡単な文字列操作などで試すことをお勧めします

IF-ELSE文

Page 13: JavaScript超入門 基礎

 文(3)

x == 0 && y == 0

if (x == 0 && y == 0) { ..... }

x == 0 || y ==0

x != 0

x < 10 x >= 5

論理AND両方とも0ならばtrueとなる

のように使う

論理ORどちらかが0ならばtrueとなる

0ではない

10より小さい5以上

論理式(演算子)

Page 14: JavaScript超入門 基礎

 文(4)

for (初期化式; テスト式; 更新式) { ..... }

for ( var i = 0 ; i < 3 ; i++ ) { alert( "i=" + i ); }

1回: alert( "i=" + 0 ); 2回: alert( "i=" + 1 ); 3回: alert( "i=" + 2 );

初期化式が一度だけ呼ばれ、テスト式が真(true)の間繰り返し、実行後更新式がよばれ次のテストへ!

初期化:変数iに0をセットテスト:iが3より小さいならば更新:iに1を足す

結果iは 0, 1, 2 と繰り返した後終了する

FOR文

Page 15: JavaScript超入門 基礎

 文(5)

for (初期化式; テスト式; 更新式) { ..... //ここでやめて次に進める continue; //ここで繰り返しをやめる break; ..... }

if文を使って特定の条件で処理をパスしたり、繰り返しを終了したい場合にループ内で制御できる

var str = '';for (var i=0; i<10; i++) { if (i == 0) continue; if (i == 5) break; str = str + ' ' + i;}alert(str); // "1 2 3 4"

FOR文での制御

Page 16: JavaScript超入門 基礎

 オブジェクト(1)

オブジェクトはJavaScriptの基本

var empty = { };

var myBook = { title: "吾輩は猫である", author: "夏目漱石" };

→複数のデータを一つにまとめる→名前によってデータを読み書きする (ハッシュテーブル、連想配列)★なんでも入れられる魔法の箱

空のオブジェクトを変数emptyに代入オブジェクトは波括弧で括る!

プロパティ”title”と”author”をセットした”myBook”という変数を作成する(プロパティ名と値はコロンで区切り、 複数のデータをカンマで区切る)

オブジェクトリテラル

Page 17: JavaScript超入門 基礎

 オブジェクト(2)

var myBook = { title: "吾輩は猫である", author: "夏目漱石", "published date": 1905 };

「JavaScriptのほとんどの値は

 オブジェクトである」

スペースやハイフンが含まれる時は文字列リテラルを使う(クウォート)=> 発行年として数値1905をセット

文字列、数値なども一時的に生成されるラッパオブジェクトによってオブジェクトのように振る舞ってくれます

オブジェクトリテラル2

Page 18: JavaScript超入門 基礎

 オブジェクト(3)

var myBook = { title: "吾輩は猫である", author: "夏目漱石", "published date": 1905 };

myBook.title myBook["author"] myBook["published date"]

オブジェクトのプロパティを読み出す時はドット( . )か角括弧( [] )演算子を使う角括弧にはプロパティ名を文字列で

=>吾輩は猫である=>夏目漱石

スペースやハイフンが含まれる場合のプロパティは角括弧のみ=ドット演算子は簡易的と考えておく

プロパティの読み出し

Page 19: JavaScript超入門 基礎

 オブジェクト(4)

var myBook = { title: "吾輩は猫である", author: "夏目漱石", "published date": 1905 };

myBook.title = "こころ" myBook["published date"] = 1914 myBook["publisher"] = "大倉商店"

オブジェクトのプロパティに値を書き込む時もドット( . )か角括弧( [] )を使い、代入をする

読み出しと同じルール

新しいプロパティ名で代入すると新しいプロパティが作成されます

プロパティの書き込み

Page 20: JavaScript超入門 基礎

 オブジェクト(5)

JSON = JavaScript Object Notation JavaScriptのオブジェクト表記

var myBook = { title: "こころ", date: 1905 };

var json = JSON.stringfy(myBook); var obj = JSON.parse(json);

JSONとはオブジェクトリテラルと ほぼ同等の記述を文字列で記した もの

JSONでは、‘ {"title":"こころ","date":1905} ’となります

★ データのやり取りに適しています そのため最近ではサーバーとのやり取りに おいて標準的なフォーマットとなっています

JSON

Page 21: JavaScript超入門 基礎

 配列(1)

配列もオブジェクト (でも特殊なオブジェクト)

var empty = [ ];

var a = [ "要素1", "要素2" ];

a[0] a.length a[3] = "要素3";

複数のデータを一つにまとめるという意味でオブジェクトに似ている。

要素数を返す「length」というプロパティを持った特殊なオブジェクト

空の配列を変数emptyに代入

角括弧演算子に負でない整数値(インデックス)を指定することで読み出す=>要素の1番目を読む=>要素数は2=>3番めの要素を新たに追加

配列リテラル

Page 22: JavaScript超入門 基礎

 配列(2)

var b = [ 1,2,3 ]; b[99] = 100; alert( b.length ); alert( b[50] );

// for文で巡回 var a = [ "いち", "にい", "さん" ]; var s = ""; for ( var i = 0; i < a.length; i++) { s = s + a[i] + "! "; } alert ( s );

添字に大きい数字を入れてみる=>100 (自動的に拡張される)=>undefined (間のデータは空)

=> 「いち」、「にい」、「さん」の 順でアラートボックスが表示される

配列の長さ、巡回(FOR文)

Page 23: JavaScript超入門 基礎

 配列(3)

var a = [ ]; a.push("<body>"); a.push(" <div>"); a.push(" <h1>タイトル</h1>"); a.push(" </div>"); a.push("</body>");

alert( a.join("\n") );

メソッド:オブジェクト内で呼び出す関数のことをメソッドと呼ぶpushとjoinメソッドを使って、

<body> <div> <h1>タイトル</h1> </div></body>

という綺麗なマークアップが完成jQueryとか使うようになると便利なやり方です“\n”は改行を表す特殊文字(エスケープシーケンス)です

配列の便利なメソッド

Page 24: JavaScript超入門 基礎

 配列(4)

var a = [ ]; a[0] = { title: "吾輩は猫である", author: "夏目漱石" }; あるいは var data = [ { title: "吾輩は猫である", author: "夏目漱石" }, { title: "どんぐりと山猫", author: "宮沢賢治" } ];

配列の要素は文字列だけでなく、何でも入れられます。なのでさきほどのmyBookも配列の要素として保存出来ます。

このように配列とオブジェクトを組み合わせ、JSONなどで外部とやり取りすることでWEBアプリケーションは動いているのです。

配列の要素

Page 25: JavaScript超入門 基礎

 配列(5)

var a = { }; a[0] = "要素1"; a[1] = "要素2"; ※インデックスを指定している  ようですが文字列に変換され  プロパティとして保存されます var a = {  "1": "要素1",  "2": "要素1" }; a.length = 2; //プロパティ追加

var b = [ "要素1", "要素2" ]; とほぼ同じ振る舞いをする

オブジェクトの角括弧内はプロパティ名、配列の角括弧内はインデックス - プロパティ名は文字列 - インデックスは負でない数値ですが見た目は同じように動きます

配列はlengthプロパティのほか、前の項で説明した便利なメソッド群をもつ特殊なオブジェクト!

オブジェクトプロパティと配列インデックス

Page 26: JavaScript超入門 基礎

 関数(1)

function 関数名 (引数1, 引数2...) { 処理.... return 戻り値; }

function add (a, b) { return a + b; }

//これを呼び出してみる alert( add(1, 2) );

一カ所にまとめて書いておくことでその機能を使い回しできます(戻り値を返さないものもあります)

簡単な足し算 (普通に式で「a + b」でいいのだけど)

呼び出すには関数名を使います=>足した結果「3」が表示されます

一度の定義で何度も呼び出せるのが関数

Page 27: JavaScript超入門 基礎

 関数(2)

var myBook = { title: "こころ", date: 1905 }; と同じように 関数を定義 ↓ var keisan = { add: function(a,b) { return a + b; }, sub: function(a,b) ... }; alert( keisan.add(a, b) );

関数も変数として扱えます

つまりオブジェクトのプロパティに関数を定義するとメソッドになります

例えばいままで使ってきた「alert」はwindowオブジェクトのメソッドですので正確には、 window.alert("hello!");なのです。

オブジェクトに関数を定義=メソッド

今後使っていくJavascriptを便利に使うためのライブラリのほとんどはオブジェクトであり、ほとんどの機能はメソッドで提供されるのです

Page 28: JavaScript超入門 基礎

 基礎は終わりです

今後WEBブラウザやモバイルでのJavaScriptを学ぶには、ブラウザでの動作方法の基本知識と、HTML/CSSの知識が必要になります。

HTMLの勉強と合わせて実際に動作させながら進めていく方法がよいと思います。

 テキストは、

  14歳からはじめる  HTML&JavaScript  わくわく  ゲームプログラミング教室  

HTML/CSSの知識とあわせて使うもの