JavaScript: forループの中で配列にループ変数扱う関数(クロージャ)を埋め込みたい

forループの中で配列にループ変数扱う関数を埋め込みたいが…

// sample1.js
var funcs = [];
for (var i = 0; i < 3; i++) {
  funcs[i] = function() {
    console.log("My value: " + i);
  };
}


for (var j = 0; j < 3; j++) {
  funcs[j]();
}

以下の通り出力することを期待しているが

My value: 0
My value: 1
My value: 2

実際には以下の通り。

My value: 3
My value: 3
My value: 3

なぜか?

続きを読む

Javaのクラスファイルの中身を知る ConstantPoolテーブル

はじめに

Javaのプログラムがどうやって動いているのかを知りたい。
手始めに、javaのクラスファイルの中身がどうなっているか、特にプログラム中の各種名前(クラス/関数/フィールドなど)や固定値をどうやって格納しどうやってそれを参照しているかについて調べる。

対象読者:

  • Java(またはJava仮想マシンを対象とする言語)のプログラムを書いたことがある人
  • Javaのプログラムがどうやって動いているのかを知りたい人
続きを読む

aws-serverless-express で API をサーバーレス化する

Node.js のフレームワークである Express の書き方で、デプロイすると AWS Lambda + API Gateway で動く aws-serverless-express を使ってみました。Express で作った既存の API を大幅に作り変えることなしにサーバーレス化することができます。

続きを読む