第39技術委員会の真実とは!?
LabelledStatementの謎を追え!

自己紹介

この物語は事実をもとにしたフィクションです

オレ達はとんでもない考え違いをしていたのかもしれない。。。

最初にLabelledStatementとは何かを説明しよう

LabelledStatementとはECMAScriptの仕様で定義されているブロックやloopを装飾するための指定である

こんなのとか
hoge: for (var i = 0; i < 10; i++) {
	console.log(i);
}
こんなの
hoge: {
	alert(1);
}

ただ、LabelledStatementはforEachなどのイテレータと相性が悪く使い勝手がいまいちだ

しかし、実はこのLabelledStatementこそインターネットを影で支える重要な役割を果たしていることがわかった

まずはこのコードを見て欲しい

<a href="javascript:alert(1)">click</a>

何の変哲もないjavascript schemeを使ったJS呼び出しだ

では次のコードはどうだろう?

<a onclick="javascript:alert(1)">click</a>

これは本来hrefに記述すべきjavascript schemeがonclickに記述されたものだ

さらに世の中にはこんなコードも存在している

<script>
javascript:alert(1)
</script>

もう分かっただろう

「このLabelledStatementこそブックマークレットをコード内に埋め込むために用意された仕様だったんだよ!!」

な なんだってー!!Ω ΩΩ

そして、さらに調査を進めた我々は次のようなコードも発見した

<script>
http://www.ecma-international.org/publications/standards/Ecma-262.htm
alert(1);
</script>

このコードの意味がわかるだろうか?

「LabelledStatementの後にコメントが続き、そのあとalertが記述されている」

「そう。つまりLabelledStatementはブックマークレットのみならず、URLをもコード内に埋め込むことができる仕様だったんだよ!!」

な なんだってー!!Ω ΩΩ

注意