JavaScript
●基本的な文法と特徴
- 比較的容易に習得ができ、様々なプログラム言語のベースになっていることもあり、初めてのプログラミングにもおすすめできる。
GAS、Node.js、Apache CouchDB、Adobe Acrobat などで幅広く使用されています。
- 通常はスクリプト言語で実行速度は遅いが、コンパイルすることで高速に実行することもできる。
- 多くのブラウザに標準実装されているスクリプト言語でマルチプラットフォームでの利用が可能。
- Node.jsをインストールすることで直接実行できるアプリを開発することも可能。
- 構文の最後には”;”を付ける。
- コメントは”//”または、”/* ~ */”
●スクリプト実行方法
- HTMLに埋め込んでWebブラウザで実行
<script>~</script>の中にJavaScriptを記述します。
- 外部jsファイルを作成してHTMLで読み込んで実行
<script type="text/javascript" src="JavaScriptファイルのパス"></script>
- ブラウザに実装されているdeveloperツールのコンソールで実行
Chromeの場合は設定→その他のツール→デベロッパーツールで開き、Consoleタブをクリックする。
JavaScriptで開発を行う際にデバッグにも役立つツールです。
- Node.jsをインストールして実行
ブラウザの制約を受けずにOS上の様々な機能へ直接アクセスができる。
Node.jsはバージョンが頻繁に更新されるため nvm-windows、node.js、npm をセットでインストールすることを推奨している。
コマンドプロンプトからは node test.js などと入力して実行します。
●変数
命名ルールについて、使用できる文字は Unicode文字、アンダーバー(_)、ドル記号($)、大文字と小文字は区別されます。
代入された値によりデータ型が決まるため、変数に型を指定することはありません。
var 変数名; //再定義可能な変数
let 変数名; //再定義不可な変数
const 変数名=初期値; //値の変更不可
var 変数名1, 変数2, ...; //複数同時に定義する
●データ型
- 数値
数値はすべて 64 ビットの浮動小数点数として扱われます。
整数 10進数以外に16進数(0xAB)、8進数(0o67)、2進数(0b0110)が使用できます。
浮動小数点 15.742 のようにそのまま記述する方法と、 7.5e-3 のような指数形式でも記述することができます。
長整数 数値を記述したあと最後に n を記述します。最大値は 9007199254740991
- 文字列
'abc'や"abc"のようにシングルクオート「'」または、ダブルクオート「"」で囲って指定する。
エスケープシーケンス \' \" \t \\ \n \r \0 \fなど
`(バッククオート)で囲むと、特殊な文字列を作ることができ改行や${変数名}を記述できます。
var str = "def";
console.log(`abc${str}`); //"abcdef"
console.log("abc" + str); //"abcdef"
const num = Number("123"); //文字を数値に変換
const str = String((123); //数値を文字に変換
配列
定義時の要素数を超えた場合は自動でサイズが大きくなります。
ただし、TypedArray(Uint8Array、Float32Arrayなど)で型を指定する場合は要素数は固定になります。
var ary = new Array("a","b","c");
var nameAry = ["足立","安藤","内木"];
var ary = []; //空の配列を作る。var ary = new Array();も同じ
var ary = new Array(16); //16個の要素で配列作成
var bytes = new Uint8Array([1, 2, 3]); //バイト指定で配列作成。.push.popなどの一部メソッドは使えない
var newBytes = new Uint8Array([...bytes, 4]); //上記で要素を追加する場合は新たに配列を作る必要がある
ary.length = 0; //要素を空にする
ary[0] = 1;
ary[1] = 2;
var str = "abc"; //str[1]は"b"
var strAry = str.split(","); //分割して配列に代入
多次元配列は、以下のように作ります。
var ary = new Array(2);
var ary[0] = new Array(3); //ary[0][0]、ary[0][1]、ary[0][2]を作成
var ary = [["a","b","c"], ["d","e","f"]]; //ary[1][2]は"f"
ary.length; 配列の要素の個数
ary.push(値); 値の要素を末尾に追加
ary.push(...ary); スプレッド演算子で配列を末尾に追加
ary.unshift(値); 値を先頭に挿入
ary.pop(); 末尾の要素を削除
ary.shift(); 先頭の要素を削除
ary = ary1.concat(ary2); ary1にary2を連結した配列を返す
ary.fill(値); 指定の値で埋める
ary.sort(); 小さい順に並び替える
ary.reverse(); 逆向きに並び替える
str = ary.toString(); 配列を文字列にする
str = ary.join("区切り文字"); 配列を区切り文字で連結して返す
ary.includes(値); 配列に値が含まれているかどうかをbool値で返す
ary.indexOf(値, 開始位置); 合致する最初の要素キーを取得する。indexは開始位置で省略可
ary.set(開始位置, ary1); 開始位置からary1の要素をすべて代入する。開始位置は省略可
resultAry = ary.slice(開始位置, 要素数); 指定範囲の要素を取り出す
resultAry = ary.splice(開始位置, 要素数, 値, 値…); 指定範囲の要素を値で置き換える。要素数を0にすると値を挿入する。値を指定しないと要素を削除する
Array.isArray(ary); 配列であるかどうかをbool値で返す
その他にもコールバック関数など複数のメソッドがあります。
特別な値
boolean真偽値 true、false
値なし null
未定義 undefined
数値でない NaN
無限 Infinity
●スコープ
変数等を定義した際の有効範囲については、関数の内側の領域(ローカル)と外側の領域(グローバル)とに分かれます。
●算術演算子
+ - * / %(余り) **(べき乗)
+= や ++ などの記述もできます。
Math.ceil(n) 小数点以下を繰り上げ
Math.floor(n) 小数点以下を繰り下げ
Math.round(n) 小数点以下を四捨五入
Math.abs(n) 絶対値
Math.max(n,m) nとmの大きい方
Math.min(n,m) nとmの小さい方
Math.pow(n,m) nのm乗
Math.sqrt(n) nの平方根
Math.random() ランダム
●比較演算子
== != > < >= <= === !==
== != は、数字の 1 と文字列の "1" のように本来は違う型である場合も、同じ型と見なして比較を行ないます。
=== !== では、そうしたことをせず型も内容も同じかどうかで比較を行ないます。
●論理演算子
&& || !
●文字列演算
"abc" + "def" 文字列を連結
"2" - 1 文字列にて引き算をすると数値として計算
.length 文字列の長さ
.charAt(n) n文字目の文字
.substring(from,to) from~to-1文字目の文字
.substring(from) from~残り全ての文字
.substr(from,len) from~len文字分の文字
.substr(from) from~残り全ての文字
.indexOf(key,from) fromを始点に 最初のkey位置
.indexOf(key) 最初のkey位置
●制御構文
if (条件式1) {
条件式1が真の時処理
} else if (条件式2) {
条件式2が真の時処理
} else {
すべての条件式が偽の時処理
}
switch (式) {
case ラベルA:
式の評価結果がラベルAと一致する場合の処理
break;
case ラベルB:
式の評価結果がラベルBと一致する場合の処理
break;
default:
式の評価結果がラベルAともラベルBとも一致しない場合の処理
}
while (条件式) {
条件式が真の時繰り返し処理
}
do {
条件式が真の時繰り返し処理
} while (条件式);
for (初期化式; 条件式; 加算式) {
繰り返し処理
}
for (i = 0; i < 10; i++) {
console.log(i);
}
for (変数 in オブジェクト) {
繰り返し処理
}
break #ループ処理終了
continue #現在のループを中断し次のループ処理を開始
●関数定義 def
関数の定義には「function」を使用します。
function 関数名(引数) {
内部処理
return 戻り値;
}
※引数、戻り値は省略可能。
関数の引数にはデフォルトの値を設定できます。また、変数として格納することもできます。
var fnc = function(a = 5, b = 10) {
return a * b;
}
fnc(); //50
●例外処理
例外のハンドリングは「try ~ except ~ else ~ finally」と言う構文で行います。
また、明示的に例外を発生させるには「raise」を使用します。
try {
【例外が発生するかもしれない処理】
throw new Error("強制的に例外を投げました");
} catch(e) { eはエラーの詳細を格納したオブジェクト
【例外が発生した場合の処理】
console.error(e);
console.error(e,name);
console.error(e,massage);
if (e instanceof RangeError) {
【RangeErrorが発生した場合の処理】
} else {
throw e; //そのまま例外を発生させる
}
} finally {
}
●HTML Application(HTA)
HTMLの技術を使って、Windows向けアプリケーションを作る方法です。
Windowsパソコンでは、HTMLファイルの拡張子を .hta にすることでアプリケーションとして動作します。
HTAファイルは、”c:\Windows\system32\mshta.exe”に関連付けられていないと起動できません。
※Win10以降のPCは関連付けされていないため、ショートカットを作るなどします。
ローカルファイルへのアクセスなどが行えるようになります。
・HTA:APPLICATIONタグ
このタグを使えば、アプリケーションらしい外観を整えることができます。
以下、設定できる値の中で、よく使うものを掲載します。
属性 | 意味 |
icon | アイコンファイルのパス ~.ico |
id | HTAオブジェクトのID thisHTAなどの文字列 |
maximizeButton | 最大化ボタンの表示 yes、no(標準はyes) |
minimizeButton | 最小化ボタンの表示 yes、no(標準はyes) |
scroll | スクロールバーの表示 yes、no、auto(標準はyes) |
contextMenu | 右クリックメニューの表示 yes、no(標準はyes) |
showInTaskBar | タスクバーへの表示 yes、no(標準はyes) |
navigable | リンクをウィンドウに読みこむか yes、no(標準はnoで別ウィンドウ) |
singleInstance | 複数起動を禁止する yes、no(標準はno)yesの時はapplicationNameが必要 |
applicationName | アプリケーション名 uniqueNameなどの文字列 |