パスワードを忘れた? アカウント作成
890624 journal
日記

ozumaの日記: JavaScript サイ本 6

日記 by ozuma

もういい加減にちょっとは知っていないとマズかろうと、JavaScriptを少し覗いてみた。まぁつまり、図書館でサイ本を借りてきたってわけですな。
最近は、オライリーの本も結構図書館に置いてあるのでありがたい。借りてみて、気に入ったら買うのだ。

しかし、もともとJavaScriptに偏見があるのでなかなか読みづらい。
特に気になったのは、数値型を文字列型に変換するときに、まるでオススメのようにこんなコードが使われること。
var n_as_string = n + "";
空文字列の連結によって、暗黙の型変換を利用して文字列型へと変換する……もう、鼻から悪魔が出るレベルに気持ちが悪い。もちろんそのすぐ後に「String()関数でも変換できるよ!」って出てくるのだが、そもそもその関数だけ紹介して、こんなコードを書かないで欲しい。

もっとひどいのが、次に文字列型から数値に変換するにはこう書くといいよ!と出てくるコード。
var number = string_value - 0;
文字列からゼロを引いて、暗黙の型変換により数値型を得るという。しかもここで、「+ 0でもできると思うだろうけど、それは上手くいかないよ! なぜなら+演算子が文字列連結と解釈されちゃうからね!」と得意げに語られる辺りで、すっかり口から魂が抜けてしまった。素直にparseInt()関数とparseFloat()関数だけ紹介すればいいじゃないか……。
今、この瞬間にも、数値型に変換するために文字列からゼロを引くコードを書いている人が世界中にいるのかと思うと、背中がムズムズしてくる。

うーん、これがジェネレーションギャップというやつか。あるいはニュータイプとオールドタイプの違いなのか。
ともかく、決してdisるわけじゃないんだけど、こーゆー感覚についていけない、おじさんの夜でした。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • ISBN-10: 4873113911 / ISBN-13: 978-4873113913 [amazon.co.jp]の方は嫌な部分に触れないで済ませる配慮があるように思えなくもないのですがそんなズルはけしからんでしょうか?

  • by Anonymous Coward on 2011年11月14日 8時26分 (#2049832)

    原書だと6版が出てたはず。
    でも日本語訳が出るかは怪しい。

    Kindleでサンプルをダウンロードしても半分以上読めるはずなので、
    Kindle持ってなくとも差分比較用にPCにダウンロードしておくのがお勧め。
    自分は念のため購入。
    http://www.amazon.com/dp/B004XQX4K0/ [amazon.com]

    >こーゆー感覚についていけない、おじさんの夜でした。
    こいつもかなりのカルチャーショックです。
    http://www.amazon.co.jp/dp/4873114888/ [amazon.co.jp]

    「こうしないと無条件でグローバル変数になるよ!一見違うように見えてもグローバル変数だからね!」
    って、「どう見てもそれ設計ミスじゃね?」というパターンもちらほらと。

  • by Anonymous Coward on 2011年11月14日 8時33分 (#2049834)

    awk だと +0 で数値に解釈させるのは普通だと思う。
    JavaScript で -0 にしろと説明しているのは、そういう人たちへの配慮かと。

    • by Anonymous Coward

      string_value + 0 ではなく、 +string_value だったら JavaScript でもふつーに使いますけど。
      で、Webページの転送量を削減できることが重要なので短く書けるならそちらを選ぶことには十分理由がある(人に手で書かせないでminifierがやれやというのには一理あるが)。

  • by Anonymous Coward on 2011年11月15日 20時21分 (#2050971)

    String()とかparseInt()とか逆にお笑いですよ
    たかだか文字列や数値に直すだけなのにコストのかかる関数を使うとかあまりにマヌケ過ぎます
    それらの関数が上書きされてたら困りますしね
    +""や-0、あといろいろありますがこれらは型を変換する演算子と思って大人しく使って下さい
    というかそこで折れないとJavaScriptの本当の良さがいつまでたってもわかりませんよ
    今まで使ってきた言語のことはサッパリ忘れて頭を柔らかくして下さい
    例えばクラスを使いたいとかいきなり思ってはダメですよ
    無理に静的型言語ぽく書いてはJavaScript良さは引き出せませんからね
    まあそういうことで、頑張って下さい

typodupeerror

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...