JavaScriptの実行環境、Node.jsのバージョン24で確認したサンプルプログラムです。
他のスクリプト言語と比べると意外な所にクセがあります。
変数展開を伴う文字列をバッククォートで囲む点、for-inとfor-ofの違いに特に注意が必要です。
なお、以前のvarはES6以降はletとconstに分化しました。Kotlinのvarとvalと同じ使い分けです。
/*============================*
* 複数行のコメントは
* このように
* 書けます。
*============================*/
// 1行コメントはこのように書けます。
console.log("Hello, World.");
console.log("こんにちは。");
// JavaScriptはセミコロンは省略できますが、この例では必ずつけています
// 再代入を許可する変数はlet、しない変数はconstで宣言
const var1 = 42;
let var2 = 35;
let var3 = var1 + var2;
let var4 = var1 - var2;
// 変数展開させる文字列はバッククォートで囲む
console.log(`結果は${var3}と${var4}`);
// 下はES6以前の書き方。変数展開はできない
const msg = "結果は" + var3.toString() + "と" + var4.toString();
console.log(msg);
var2 += 18;
var3--;
var4++;
console.log(`${var2} ${var3} ${var4}`);
// 配列はArray()かリテラル[]で定義できる。現在は[]で定義するのが主流
// 初期化時の値は 42 53 76 8
const arr1 = [var1, var2, var3, var4];
// 分岐と反復
// 値を取り出すのはfor-inではなくfor-ofなので混同しないよう注意
for(const v of arr1){
if(v >= 50){
console.log(`${v}は50以上です。`);
} else if(v >= 40 && v < 50){
console.log(`${v}は40以上50未満です。`);
} else {
console.log(`${v}は50未満です。`);
}
}
let var5 = 1;
/*
for(let i=0; i<arr1.length; i++){
var5 *= arr1[i];
}
*/
// C言語型のfor文も書けるが、下の書き方の方がJavaScriptらしい。
for(const v of arr1){
var5 *= v;
}
// JavaScriptにはsprintfはないが、
// toLocaleStringで(日本では)カンマ区切りになる。
console.log("計算結果:[" + var5.toLocaleString("ja-JP", {
minimumFractionDigits: 2, maximumFractionDigits: 2
}) + "]");
const str1 = "Hello,Power,Shell,World";
// lengthに括弧は不要
console.log("文字列の長さは" + str1.length);
// 大文字に変換。Javaと同じ
console.log(str1.toUpperCase());
// 配列の分割もJavaと同じString#split()
const arr2 = str1.split(",");
// 配列を表示
console.log(arr2);
// 正規表現
const re = /^.[opqr]/;
for(const v of arr2){
if(re.test(v)){ // 2文字目がopqrのいずれか
console.log(`${v}はマッチします。`);
} else {
console.log(`${v}はマッチしません。`);
}
}
// JavaScriptのビルトインの日付のフォーマット機能としてはIntl.DateTimeFormatがあるが、
// ここでは自作の関数でフォーマットする
// 月は+1する必要がある。またHours,Minutesなど末尾のsが必要な点も注意
function formatDateTime(d){
return d.getFullYear()+"/"+lpad2(d.getMonth()+1)+"/"+lpad2(d.getDate())+" "+
lpad2(d.getHours())+":"+lpad2(d.getMinutes())+":"+lpad2(d.getSeconds());
}
function formatDate(d){
return d.getFullYear()+"/"+lpad2(d.getMonth()+1)+"/"+lpad2(d.getDate());
}
// 左0詰する関数も自分で定義
/*
function lpad2(s){
//return ('00'+s).slice(-2);
return String(n).padStart(2, "0");
}
*/
// 次のような書き方もできる。アロー関数と呼ばれる書き方で、ES6以降で使える。
const lpad2 = (n) => String(n).padStart(2, "0");
// 現在時刻の取得
const dstr1 = formatDateTime(new Date());
// 指定した年月日の値を取得。月は1月が0なので注意
const dstr2 = formatDate(new Date(2020, 4-1, 26, 0, 0, 0));
// Perl等のヒアドキュメントをJavaScriptではテンプレートリテラルと呼ぶ。
// バッククォートで囲むことで複数行の文字列を定義できる。
// バッククォートの直後/直前で改行すると改行文字も入る点に注意
const s = `現在時刻は${dstr1}です。
特定の日付とは…${dstr2}です。`
console.log(s);
// end.