JavaScriptをMacのターミナルから対話的に使う

 最近、少しずつJavaScriptの勉強をしている。Javascriptを対話的に実行したい場合、Macならばjscを使うのがよい。

jscをターミナルから使う

デフォルトではシンボリックリンクが無いので、ターミナルでjscと打ってもcommand not foundになる。そこで、ln -sを使ってjscコマンドでJavaScriptの対話環境を実行できるようにする。

$ cd /usr/local/bin
$ ln -s /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc ./

 これでターミナルでjscと打つだけでJavaScriptを対話的に実行することができる。下記は電卓として使ってみたときの入力と出力だ。試しに、整数や浮動小数点数の計算を行ってみた。
f:id:hqac:20160305233647p:plain

JavaScriptの浮動小数点数について

 JavaScriptでは数値は全て浮動小数点数になるが、これは近似値に過ぎない。例えば、0.1 + 0.2は0.3と一致しない(上記画像を参照)。つまり、通常の方法では小数点以下の正確な計算を行うことはできない。

 もっとも、これはJavaScriptに限った問題ではなく、ほぼ全てのプログラミング言語の浮動小数点数で同じ問題が起きる(Pythonでも起きる)。これは、64ビットで表せる浮動小数点数に制限があるからだ。しかし、言語によってはJavaScriptのように型を意識しないで書けるので、浮動小数点数の持つ問題に気付かないことがある*1

適材適所

 JavaScriptにおいて浮動小数点数を扱う可能性がある場合は、正確な計算ができるように気をつけなければならない。というかそのような場合はJavaScriptを使うべきではない気もする。

 そもそもJavaScriptの数値型は全てが浮動小数点数なので計算のパフォーマンスは高くないらしいし、Pythonのように正確な10進浮動小数点数の計算をサポートしてくれる標準ライブラリがあるわけでもない。

*1:代わりに型変換しなくていいのでバグの原因が減るというメリットもある