https://vim.dev、完全に喧嘩売ってて草。
Notices by [ニューウェーブ]硫酸鶏 (ac@imastodon.net)
-
[ニューウェーブ]硫酸鶏 (ac@imastodon.net)'s status on Friday, 01-Mar-2019 16:56:21 JST [ニューウェーブ]硫酸鶏 -
[ニューウェーブ]硫酸鶏 (ac@imastodon.net)'s status on Thursday, 28-Feb-2019 15:51:57 JST [ニューウェーブ]硫酸鶏 Firefoxはいいぞ
-
[ニューウェーブ]硫酸鶏 (ac@imastodon.net)'s status on Monday, 18-Feb-2019 19:34:18 JST [ニューウェーブ]硫酸鶏 Misskey、Docker Hubにあるよ
-
[ニューウェーブ]硫酸鶏 (ac@imastodon.net)'s status on Friday, 08-Feb-2019 18:55:14 JST [ニューウェーブ]硫酸鶏 [[][[]]+[]][+[]][+[]]
をまず
_=[][[]];[_+[]][+[]][+[]]
という感じに分けて考えます。
[]は空の配列を生成し、後続の[[]]がこれに対して[]をキーとしてアクセスするので、当然undefinedになります。よって
[undefined+[]][+[]][+[]]
という感じになります。ここで
undefined+[]
ですが、両辺がNumberでないためにtoStringが暗黙的に呼び出され文字列結合されます。ただしArray.prototype.toStringはArray.prototype.joinと等価の結果を返すため、空の配列から得られる文字列は空文字列となります。よって
['undefined'][+[]][+[]]
という感じになります。更にここで
+[]
ですが、接頭につく+は空文字列を0に変換する効能を持つため、空配列が文字列化された上で0になります。よって
'undefined'[+[]]
となり、'undefined'という文字列の0番目にアクセスするため
'u'
となります。
-
[ニューウェーブ]硫酸鶏 (ac@imastodon.net)'s status on Friday, 08-Feb-2019 18:51:19 JST [ニューウェーブ]硫酸鶏 本当に面白い言語だよJSは。
-
[ニューウェーブ]硫酸鶏 (ac@imastodon.net)'s status on Thursday, 17-Jan-2019 12:21:47 JST [ニューウェーブ]硫酸鶏 邪悪なことに使うな、GPLだとそれも自由の一つと解釈されるのでGPL互換にならない話すき。