JavaScriptの基礎
言語の特徴など
- 動的なウェブサイト構築などを目的として作られたスクリプト言語(もともとはNetscape社が開発.1995年に登場)
- 大半のウェブブラウザに実行環境が実装されている.
- 最近は標準化団体Ecma Internationalによって,ECMA Scriptという名称で共通仕様が定められつつある
- 特に,2015年のES2015(ES6)の策定により,JavaScriptを取り巻く環境は激変した
- 非常に多くのライブラリ(フレームワーク)があり,大規模開発にも使われる.
- node.js等の登場(2009年)により,サーバサイドでJavaScriptを実行する環境も整いつつある.
- Java言語とは異なるが,構文的には似た点も多い.(C言語にも似たところがある)
JavaScriptで書かれたプログラムの実行方法
ブラウザを使う
ブラウザを用いて Javascript を実行する基本手順:
- HTMLファイルを作成する
- 作成したHTMLファイルの中に javascript プログラムを書く
- 作成したHTMLファイルをブラウザで開く
HTMLの解説ページにも少しだけ記載しているが,次のようなひな型を基本として,これをブラウザで開けばよい.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
なお,HTMLファイル中に直接,プログラムを記述しなくても,6行目(や12行目)の部分を
6 |
|
と書き換えて,ファイルprog.js
の内部にJavaScriptプログラムを記述しても構わない.JavaScriptプログラムのファイル拡張子は通常,.js
である.
確認
<script>
タグのsrc
属性に記述するファイルの実際の存在位置に注意すること.この例の場合はHTMLファイルと同じディレクトリ内にあること.
ブラウザを使わない場合
いろいろ方法があるが,この講義では(サーバサイドのJavaScript実行環境である)node.jsを使った実行をお勧めする.特に,通信系のソフトウェア開発を行う班は今後もnode.jsを頻繁に使うことになるだろう.
最新版node.jsの環境を作成する手順については別ページで.
node.jsが利用できる環境であれば,
$ node sample.js
とすればJavaScriptで書かれたプログラムsample.jsを実行することができる.
基本文法
print
いわゆるC言語のprintf(),あるいはJava言語のprintln()に相当する関数は,JavaScriptには定義されていない!ので,通常はconsole.log()
を使う.console.logでは,文字列に限らず,さまざまなオブジェクトを出力できる.
1 2 |
|
- もちろん,alertを使う手もある.
- HTMLとの連携を前提としてよいなら,HTML文書中に直接書き込む
document.write()
とかdocument.writeln()
などもある.
コメント
C言語やJava言語と同様に書ける.
1 2 3 4 |
|
文
これもC言語やJava言語と同様で,文の最後にセミコロン(;
)を付ける必要がある.
変数
var
で宣言する(let
とconst
も使える).JavaScriptにおける基本型には boolean
,number
,string
の3種類のみ.型による宣言の仕方に違いは無い.
1 2 3 4 |
|
変数の型はtypeof
演算子で調べることができる.
5 6 7 8 |
|
C言語などに比べて大きく違うのは,変数自体には型が無く,自由に代入できる,という点がある.つまり,
9 10 |
|
と書ける.
また,数値(number型)に関しても,すべてが実数として扱われ,"整数型"という型はない.
演算
演算結果は全て実数(number)型になる.
1 2 3 4 5 |
|
代入演算子,インクリメント,デクリメント
C言語と同様に使える.
1 2 3 4 5 6 7 8 9 10 |
|
文字列
- シングルクォート(
'
)またはダブルクォート("
)で囲む \t
(タブ)や\n
(改行)などの特殊文字も利用できる
1 2 |
|
配列
配列の生成
1 2 3 |
|
- JavaScriptには値が存在しないことを示す特別な
undefined
値がある
配列の参照と代入
1 2 3 4 |
|
- JavaScriptの場合,範囲外アクセスが普通に可能なので注意すること!
要素の個数
1 2 |
|
配列の操作
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
- 他にも,ary.{
slice()
,splice()
,concat()
,sort()
,reverse()
,filter()
,map()
}などの便利なメソッドが存在するので,必要な場合は調べてみよう.
連想配列
JSON記法(JavaScript Object Notation)を使うと,オブジェクトを連想配列のように扱うことができる.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
- 要は,配列(Array)を
[
,]
で,オブジェクト(Object)を{
,}
で記述する,というルール - オブジェクトについては,応用編のページで.
文字列操作
結合
1 2 |
|
分割
1 |
|
文字数(文字列の長さ)
1 2 |
|
検索
1 2 3 |
|
切り出し
1 |
|
条件式
これもC言語とほぼ同様だが,真の場合にはtrue
,偽の場合にはfalse
が返される.
(戻り値がboolean
型,ということ)
代表的な条件式は以下.
条件式 | 説明 |
---|---|
a == b |
aとbの値が等しい |
a != b |
aとbの値が違う |
a < b |
aよりbが大きい |
a > b |
aの方がbより大きい |
a <= b |
aはb以下 |
a >= b |
aはb以上 |
a && b |
aかつbが成り立つ |
a || b |
aまたはbが成り立つ |
JavaScriptでは===
(厳密等価演算子)という演算子があるので覚えておこう.
等価演算子==
と厳密等価演算子===
の違いを表す例を以下に示す.
console.log(1 == 1); // true
console.log(1 === 1); // true
console.log('abc' == 'abc'); // true
console.log('abc' === 'abc'); // true
console.log('1' == 1); // true
console.log('1' === 1); // false
console.log(0 == false); // true
console.log(0 === false); // false
制御文
if
文やif-else
文はC言語とほぼ同様に書ける.
if (条件式) {
文1;
文2;
}
if (条件式) {
文1;
} else {
文2;
}
if (条件式1) {
文1;
} else if (条件式2) {
文2;
} else if (条件式3) {
文3;
} else {
文4;
}
while
文もC言語と同様.
while (var i < 5) {
...
i++;
}
for
文もC言語と同様.
for (var i = 0; i < 5; i++) {
...
}
for〜in
などの構文もあるので調べてみよう.
switch〜case
文もC言語とほぼ同様だが,case
の後に評価値を書ける点が異なる.
var a = 10
switch (a) {
case 5 + 3:
console.log('Case 5+3');
break;
case 5 + 5:
console.log('Case 5+5');
break;
default:
console.log('Other');
break;
}
関数
JavaScriptにおける関数定義は以下のように記述する.
function add(a, b) {
return a + b;
}
JavaScriptの関数は,変数に代入することもできる.(関数式)
var sum = function(a, b) {
return a + b;
};
ちなみに,変数や関数のスコープはC言語と同様に考えてOK.
簡単なJavaScriptプログラム例
現在時刻の表示
(言語にあらかじめ用意されている)組み込みオブジェクトDate
を使う.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
指定日までの残り日数表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
スクロール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|