teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

リファクタリング

2020/02/04 03:14

投稿

miyabi-sun
miyabi-sun

スコア21472

answer CHANGED
@@ -1,15 +1,14 @@
1
1
  > `var t = !!usr;`
2
2
 
3
- `!`というのは[演算子](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators)の一種です。
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
- これを2連続で使うと`1`や`"hoge"`を`true`に変換出来ます。
9
+ `Boolean(usr)`という風正規の手順で型変換を行った方が読みやいかもしれません
10
+ しかし`!!`はたった2文字で済む為、プログラマでは有名なキャストで愛用者も非常に多いです。
9
11
 
10
- ちゃんと書くなら`Boolean(usr)`という風にキャストして書くべきでしょうけど、
11
- 面倒だし2文字だし、プログラマでは有名なキャストだから別にいいやと使っている人はまぁまぁ多いです。
12
-
13
12
  ---
14
13
 
15
14
  > `var t={ user:user }`