第39技術委員会の真実とは!?
LabelledStatementの謎を追え!
この物語は事実をもとにしたフィクションです
オレ達はとんでもない考え違いをしていたのかもしれない。。。
最初にLabelledStatementとは何かを説明しよう
LabelledStatementとはECMAScriptの仕様で定義されているブロックやloopを装飾するための指定である
こんなのとか
hoge: for (var i = 0; i < 10; i++) {
console.log(i);
}
ただ、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をもコード内に埋め込むことができる仕様だったんだよ!!」
な なんだってー!!Ω ΩΩ
注意
- たぶん偶然です
- どこでも書けるわけではないです(ラベルが書けるところのみ)
- 多分書かないほうがいいです
- 第39技術委員会はECMA内でECMAScriptに関して話してる委員会です