回答編集履歴
1
リファクタリング
answer
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
> `var t = !!usr;`
|
2
2
|
|
3
|
-
`!`という
|
3
|
+
`!`は**論理否定演算子**という正式名称を持つ[演算子](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators)です。
|
4
|
-
|
4
|
+
|
5
5
|
JavaScriptはtrueや`1`、`"hoge"`といった[trueっぽい値](https://developer.mozilla.org/ja/docs/Glossary/Truthy)を`false`に変換、
|
6
6
|
逆にfalseや`0`、`""`といった[falseっぽい値](https://developer.mozilla.org/ja/docs/Glossary/Falsy)を`true`に変換します。
|
7
7
|
|
8
|
+
これを2連続で使って`1`や`"hoge"`から、`true`に変換する[イディオム](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%87%E3%82%A3%E3%82%AA%E3%83%A0)です。
|
8
|
-
|
9
|
+
`Boolean(usr)`という風に正規の手順で型変換を行った方が読みやすいかもしれません。
|
10
|
+
しかし`!!`はたった2文字で済む為、プログラマでは有名なキャストで愛用者も非常に多いです。
|
9
11
|
|
10
|
-
ちゃんと書くなら`Boolean(usr)`という風にキャストして書くべきでしょうけど、
|
11
|
-
面倒だし2文字だし、プログラマでは有名なキャストだから別にいいやと使っている人はまぁまぁ多いです。
|
12
|
-
|
13
12
|
---
|
14
13
|
|
15
14
|
> `var t={ user:user }`
|