JavaScriptの小さな闇

@chomado さんとその周辺からJSの演算子まわりでちょっとした物議を醸していたので、まとめました。
5
まとめ 「型を付けないほうが自由?」抽象化と型の関係について 型モヒカンは今日も戦う 読みやすさのため順番を少し前後させています。 5922 pv 41 8 users
tomo🐧@learning @cocoatomo

@chomado その発言だと、「型の有無」が変数の型の話なのか値の型の話なのか、やや曖昧な気がします。 JS の例で言えば、型の有無が問題というより、「値に型はあるけど ad-hoc polymorphism のルールが酷い」という話だと思います。

2014-12-27 23:26:33
ArcCosine @ArcCosine

@chomado JSの話だよね。jsの場合、+記号が文字列連結もするから、"5"+1の場合文字として処理されて、51になるだけやね。

2014-12-27 23:30:54
超実数 @osa_k

型の変わる境界はバグりやすいので人間に見えるようにしといてくれと思っている

2014-12-27 23:41:16
ホテルバルティック(クローン)@築27年 @noan6251

そういえばPerl 0 # false "0" # false "0.0" # true "0" == 0 # true "0.0" == 0 # true "0" == "0.0" # true だしこのあたりどうなっているのか良く分からない.

2014-12-27 23:44:05
まお @otmb

@chomado typescriptというのがある

2014-12-27 23:44:50
T-Z/ティゼ @t__z

@chomado JavaScript楽しいですよ!(白目向きつつ) 10 Small Things You May Not Know About Javascript samuli.hakoniemi.net/10-small-thing…

2014-12-27 23:47:30
@Searcholic_jp @searcholic_jp

@chomado 浮動少数点数floatと整数int間の変換は、希にものすごい見つけにくいバグの潜在性をはらんでいますね。手計算では3だけどfloatが絡んだことで約3=2.99999見たいな計算結果になることがたまにあります。

2014-12-27 23:47:49
ちょまど🎀💻エンジニア兼漫画家 @chomado

"5" + 1 JS勢「"5"+1 は "51" にしといてくれよ。気を利かせて。ここでの+は文字列連結だ」 厳格な型勢「型が違う」 ー "5" - 1 JS勢「-1したいということは"5"は数値として扱って5-1と評価するべきだ。気を利かせて」 厳格な型勢「型が違う」

2014-12-27 23:48:49
とみながたけひろ @takehiro_t

@chomado その辺はまあ平和に「変態だよねー」とかいえるんだけど、小数点とか分数とかが出てきてからがつらい

2014-12-27 23:52:41
@Searcholic_jp @searcholic_jp

@chomado 整数を浮動少数点数に型変換したときに、2進法で整数と同値を作れないことに起因するので、信頼性が重要な場合は、はじめから浮動少数使わないってルールでプロジェクト進めたりしました。本当に厄介なんです( ;∀;)

2014-12-27 23:56:30
T-Z/ティゼ @t__z

@chomado なおJavaScriptでの"0"はtrue。  javascript:alert((0 || "true" === "false" || "0" || "") + 0);

2014-12-27 23:57:54
みろなる |∀・꒱.。oO (☕️🍷🍶) @mironal

演算が定義されてないときは、良しなにやらずにエラーだせ! 報連相をちゃんとしろ

2014-12-27 23:59:00
ぬま @numa08

暗黙的に型変換をする言語「勝手によしなにしといたで」←型安全 暗黙的に型変換をしない言語「許さん!動かさん!!」←型安全 C言語「おwwwメモリ操作したらなんか動いたwwwどうなるかは知らんわwww」←型安全ジャナイ!!

2014-12-28 00:10:53
文殊堂 @monjudoh

コードゴルフとか以外で暗黙の型変換を期待してコード書いてるJS勢とかいないと思ってるし、いたらいなくしてやる。 twitter.com/chomado/status…

2014-12-28 00:35:53