JavaScript 再入門

技術ブログを書いてみようという試み。

ブログを書くのも初めてなのに、技術ブログ。何をしたものか。

何をしてもいいみたいなので、最初に触った言語、かつこの業界に入るきっかけとなった

JavaScriptに再入門してみようと思う。

ちなみに

仕事でJavaScriptをメインで使っていたのは14年前くらい、証券系のWebページ作成で活用していた。

いまだに某証券取引所のページで、現役で動いているものもあり

1年に1回くらい訪問して、健在っぷりを確認してホッとする反面

大丈夫なのだろうかという思いにとらわれている( *´艸`)

書籍選びなど

おもむろに「JavaScript」でググって見つけた以下のページ↓

postd.cc

今さら優秀なJavaScriptの開発者を目指すわけでもないが、再入門の手掛かりにしてみようと読み進める。

ブログ記事で学習するな、本を読め、ということなので、1冊買ってみる。

www.amazon.co.jp

古い本だが、確かに良さそうだ。

リファレンス本はいくつか見てきたが、この手の本は読んだことがなかった。

==!= は使うな

いきなりだが、演算子について。

値の調査によく使っていた演算子==!= だが、JavaScriptにおいては悪のようだ。

' ' == 0    // false
0 == ' '    // true
0 == '0'    // true

もちろん全部期待はfalseだろうが、この一貫性のなさはなんだろうか。

解説によると、比較する2つのオペランドが異なる変数型であった場合、値を強制変換してしまうとのこと。

JavaScriptは型に関して緩い印象があるが、こんなところに影響があるとは。

  • 解決策
    • == の代わりに === を使う。
    • != の代わりに !== を使う。

なんでリファレンス本はこんなことも書いていなかったのだろうか。。。

VB.NETで、And は使わず AndAlso を、Or は使わず OrElse を使うべき、ということを知ったとき以来の演算子ネタ。

レビュー時に ==!= を見かけたら今後は全部NGにしよう。

数値あれこれ

小数計算に向かない

JavaScriptには数値型が1つしかない。64ビットの浮動小数、要するにdoubleのみ。

1 === 1.0    // true

楽な時もある。

0.1 + 0,2    // 0.30000000000000004

JavaScriptに小数計算やらせないほうがいいね。やるなら一旦整数に。王道。

parseInt関数
parseInt("16")    // 16
parseInt("16 hoge")    // 16

これは有名。できるところまで頑張って数値にする関数。

parseInt("08")    // 0
parseInt("09")    // 0

0になるって!※

最初の文字が「0」の場合、8進数とみなすようだ。

parseInt("08", 10)    // 8

第二引数で基数を与えると安定。

Google Chrome だと、parseInt("08") -> 8 と出た。ブラウザ実装にもよるらしい。基数指定した方が幸せになれそう。

NaN

Not a Number の略として有名。

typeof NaN === 'number'    // true

型は数値型と主張している。

NaN === NaN    // false
NaN !== NaN    // true

一体どういうことやねん。

NaNを調べる方法としては以下を行うしかないようだ。

isNaN(NaN)     // true
isNaN(0)       // false
isNaN('hoge')  // true
isNaN('0')     // false

4行目、嫌な人も多いかもしれない。

一旦これまで

書籍をせっかく買ったので、読破してみます。

リハビリ終わったら流行りのライブラリとか行ってみます。