JSF**k講座 4限目【全ての英字(小文字)】

# 初めに

[3限目](https://qiita.com/shimgo2008/items/8fe67d6a40a516b7a6da)の復習をしっかりとしておきましょう
3限目では以下のコードによりJSFで作ったStringの任意のコードの実行ができることを学びました
```js
[]['at']['constructor'](/*任意のString型で記述されたコード*/)()
```
# 第4限の内容
JSFでいろいろなコードを実行できるようになるために、全ての小文字の英字を取得していきます
それに必要な

# function String() { [native code] }

constructor以外の部分を見るとかなり短くまとまっているコードで取得できます
```js
(([]+[])['constructor']+[])
//'function String() { [native code] }'
```
```js
(([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])
//'function String() { [native code] }'
```

ここから新しく手に入れられる文字は
```js
(([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]]
//'S'

(([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]]
//'g'
```

この`S`が非常に有用です
実際に何ができるかみていきましょう

# Num['toString'] (36)

`S`を使って何をやるか？
その答えは`toString`です
**toStringを使ったところで数字をStringの数字にできるだけじゃねーか**
と思う方々もいるかもしれません
しかし、この`toString`の後の`(36)`が非常に大切なのです
toStringの引数にNをいれると、N進数に直してくれます
例えば
```js
"00"+49151['toString'](16)
//00bfff
```
とやってあげれば
<font color='00bfff'>このような色</font>になる16進数が帰ってきます
そしてかんの言い方はお気づきかもしれませんが、16進数は数字を
```
0,1,2,3,4,5,6,7,8,9
a,b,c,d,e,f
```
のように`0~9`だけではなく、`a~f`までの英語も使って表します
そして`36`を引数に入れたとなると
```
0,1,2,3,4,5,6,7,8,9
a,b,c,d,e,f,g,h,i,j,k,l,m,n,
o,p,q,r,s,t,u,v,w,x,y,z
```
の36文字で表されます
`0~9`はそのままで、
10~35は`a~z`に対応して変換されます
つまり
```js
10['toString'](36)
//'a'

11['toString'](36)
//'b'

12['toString'](36)
//'c'

13['toString'](36)
//'d'

14['toString'](36)
//'e'
.
.
.

33['toString'](36)
//'x'

34['toString'](36)
//'y'

35['toString'](36)
//'z'

36['toString'](36)
//'10'
```

というように出力されます
このようにして全ての英字(小文字)を得ることができます

最後になりますが`['toString'](36)`をJSFで書くとこのようになります

```js
/*Number*/[(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(+[!![]]+([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[(+!![])+(+!![]+!![]+[])]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(([]+[])[([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(([][[]])+[])[+!![]]+(![]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+(([]+[[]])[+[]]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]]+(!![]+[])[+[]]+([][[((![]+[])[+!![]])+((!![]+[])[+[]])]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]]+(!![]+[])[+!![]]]+[])[+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]]]((+!![]+!![]+!![])+(+!![]+!![]+!![]+!![]+!![]+!![]+[]))
```

# 最後に
今回も短くなってしまい申し訳ございません
次回は[]['at']['constructor']の解説をする予定です
>反応本当に嬉しいですありがとうございます
前回毎日投稿やると言いましたがいきなり1分遅れてしまいました...
明日はもう少し早めに投稿します

## 時間割
1限目
[JSF**k講座1限目【基礎講座】](https://qiita.com/shimgo2008/private/b7421974a1aab8131b43)
2限目
[JSF**k講座2限目【最初の文字たち】](https://qiita.com/shimgo2008/items/285ba81ee5f925cc0258)
3限目
[JSF**k講座3限目【関数の実行】](https://qiita.com/shimgo2008/items/8fe67d6a40a516b7a6da)
4限目
[JSF**k講座4限目【全ての英字(小文字)】(ここ)]()

チートシート
[JSFチートシート](https://qiita.com/shimgo2008/items/5aeaa977d2dbf11ae4ec)