JSFuckという言語を知ってるかい?

なぜみんな言語名にfuckをつけたがるのか…

この記事を三行にまとめると

足し算の挙動の違いを利用する
文字列のインデックス指定を利用する
JavaScriptでできることは一通りできる
この記事は以下の動画の中に出てきたサンプルコードを載せたものです。コピペなどが必要なときに使ってください。





alert(0)を実行するコード

[][(![]+[])[+!![]]+(!![]+[])[+[]]][([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]+!![]]+(([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]+!![]+!![]+!![]+!![]])+(([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]])+((![]+[])[!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+((!![]+[])[!![]+!![]])+(([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]+!![]])+((!![]+[])[+[]])+(([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])]((![]+[])[+!![]]+(![]+[])[!![]+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]+([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[(+!![]+[])+(+!![])]+(+[])+([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[(+!![]+[])+(!![]+!![])])();



各パーツについて

// 0
+[]

// a(false[1])
(![]+[])[+!![]]

// l(false[2])
(![]+[])[!![]+!![]]

// e(true[3])
(!![]+[])[!![]+!![]+!![]]

// r(true[1])
(!![]+[])[+!![]]

// t(true[0])
(!![]+[])[+[]]

// alert
(![]+[])[+!![]]+(![]+[])[!![]+!![]]+(!![]+[])[!![]+!![]+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]

// at(fasle[1]+true[0])
(![]+[])[+!![]]+(!![]+[])[+[]]

// []["at"]
[][(![]+[])[+!![]]+(!![]+[])[+[]]]+[]

// constructor
([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]+!![]]+(([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]+!![]+!![]+!![]+!![]])+(([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]])+((![]+[])[!![]+!![]+!![]])+((!![]+[])[+[]])+((!![]+[])[+!![]])+((!![]+[])[!![]+!![]])+(([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]+!![]])+((!![]+[])[+[]])+(([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[!![]+!![]+!![]+!![]+!![]+!![]])+((!![]+[])[+!![]])

// かっこ ([]["at"]+[])[11]、([]["at"]+[])[12]
([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[(+!![]+[])+(+!![])]
([][(![]+[])[+!![]]+(!![]+[])[+[]]]+[])[(+!![]+[])+(!![]+!![])]
 もしかしたら何か関連しているかも? 
 みんなからのコメント 
2024年06月14日 20:31:41
はるりなだん
プログラミングを始めてみたいけど、何が必要か、何から始めていいかわからないです…
2024年06月14日 22:30:47
まっち~(管理人)
>はるりなだんさん

参考になるか分かりませんが、僕の場合は教科書を順番に読んで一つずつ覚えていくみたいなやり方ではなく、先に作りたいものを決めて、それを作るにはどうすれば良いかを一つずつ調べて作っていくみたいなやり方を実践しています。

例えばおみくじを作ろうと決めたら「画面に大吉と表示するには?」「大吉、中吉、小吉、凶をランダムに表示するには?」「大吉を他よりも出やすくするには?」「大吉や凶のときに文字の色を変えるには?」みたいに少しずつ機能を増やして、それを実装する方法を調べるみたいな感じです。

数学で言えばまずは公式から覚えるのではなくて、先に練習問題を見て、その問題を解くのに必要な公式を調べるみたいなイメージですかね。そっちの方が公式の具体的な使い方が覚えられるので僕の場合は頭に入りやすいです。

作りたいものがあればこのやり方が良いんじゃないかなと思うのですが、特に作りたいものは思い浮かばないけどとりあえずプログラミングのスキルが欲しいみたいな場合は、多少お金はかかってしまいますがオンラインスクールなどを検討してみるのもありだと思います。
2024年06月16日 18:03:37
はるりなだん
とてもわかりやすい説明ありがとうございます。
参考にさせていただきます!