Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Booleanオブジェクト #72

Closed
azu opened this issue Jul 3, 2016 · 8 comments
Closed

Booleanオブジェクト #72

azu opened this issue Jul 3, 2016 · 8 comments

Comments

@azu
Copy link
Collaborator

azu commented Jul 3, 2016

#17 基本文法

  • Booleanによるキャスト
  • trueとなる値、falseとなる値
  • new BooleanとBoolean(コラム)

これは完全にMDNと同じになる気がしている。

trueとなる値、falseとなる値

についてを重点的にわかりやすく解説するのを目的とする。

関連

#31 で 次のように書いてるので、ここでその問題を解決する

どのような式がtrueとして評価されるかは、[Booleanオブジェクト][]で紹介します。

@azu
Copy link
Collaborator Author

azu commented Jul 3, 2016

書いていて Boolean によるキャストは殆ど書いた記憶ない。( !! の方が見かけるぐらい)
キャストをしたい場合は明示的に真偽値が欲しい時になるはずだけど、
これはBooleanのキャスト = #53 型変換 を悪用してるような気がする。

空文字なら 文字列.length === 0 などの比較演算子を使えばいいし、キャストが必要になるケースは大抵がおかしな状態になってる気がする。
なので、それを使うケースが出てきたら危険信号 ⚠️ であるという話もできるといい気がする。

@teppeis
Copy link

teppeis commented Jul 3, 2016

思い出してみる。

  • nullable string型に対して1文字以上あるかどうか
  • nullable boolean型をnon-nullableにする
  • ビット演算後にビットが立ってるかどうか

いずれも比較演算子で書けるので、危険信号と言えなくもない。
ただ、nullable系は2段階比較が必要だとつらいのでBoolean()か!!したい。
その場合Boolean()と!!がどっちがいいかと言うとどっちでもいい気がする。

@azu
Copy link
Collaborator Author

azu commented Jul 3, 2016

ただ、nullable系は2段階比較が必要だとつらいのでBoolean()か!!したい。

https://twitter.com/mysticatea/status/749523213244207104
こういう感じのもの?

if( str == null ) {
    return false;
}
if( str.length === 0 ){
    return false
}
// == ?
return Boolean(str);

@teppeis
Copy link

teppeis commented Jul 3, 2016

はい、そです。意味としてはa.length > 0なんだけど、nullableだと先にnullチェックがいるっていう。
柔らかいJSだとnon-nullableという確証がないので常に!!aとかBoolean(a)の方が安全ということになりがち。

ClosureやFlowtypeだと、型をnon-nullableに寄せれば躊躇せずa.length > 0だけでOKなんだけど。

@azu
Copy link
Collaborator Author

azu commented Aug 20, 2016

このセクションはやっぱりいらない感じがするなー。
#53 で大体カバーできるので、 Boolean オブジェクトを知っていることで何か得する事があるかどうかぐらいかな。

問題としては、タイトル的に falsy が書いてある場所が探しにくい感じぐらいかな。
(falsy自体については多分いろんな所で何度も説明書く感じ。気をつける必要があるものだし)

@azu
Copy link
Collaborator Author

azu commented Aug 25, 2016

[].filter(Boolean) という使い方してるケース

https://github.com/babel/babel/pull/3673/files#diff-f0dba020c48e5f7861c241eb8ac5aa8eR7

@azu
Copy link
Collaborator Author

azu commented Nov 30, 2016

これは結局多分章としてはない気がする

@azu
Copy link
Collaborator Author

azu commented Dec 7, 2017

これは章としてはいらないのでclosed

#328 (comment)

@azu azu closed this as completed Dec 7, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants