[JavaScript] goto 文の実装例

なんか JavaScript で goto 文を実装した、みたいな記事を見かけたので、自分バージョンを書いてみた。

goto文.jpg

C言語の例は以下の通り。


c言語によるgoto文の例

    printf("init\n");

start:
printf("start\n");
goto next;

skip:
printf("skip\n");

next:
printf("next\n");

printf("exit\n");


JavaScript言語で書いてみた。


JavaScript言語によるgoto文の様に書いてみた例

var target;

target: for (;;) switch (target) {

case undefined:
console.log('init');

case 'start':
console.log('start');

// goto next;
target = 'next';
continue target;

case 'skip':
console.log('skip');

case 'next':
console.log('next');

default:
break target;

}

console.log('exit');


変数は goto 文の行き先を示す target という名前の変数1つだけ。

変数を宣言しただけだと初期値は undefined だ。

後は continue target; する前に行き先のラベルを文字列で格納するだけ。

target:continue target;break target;

target 部分はブロックラベルなので予約語以外ならなんでもいい。

変数名とラベル名は区別されているみたいですね。

for (;;)while (true)while (1) でもOK。

でも for (;;) は forever って読めるので無限ループっぽくて好きだ。

default: break target; を間違えて default: break;

書いちゃうと、ループから抜けられなくて死ぬよ。

P.S.

書いてみたけど役に立つことはなさそう。