SOFTELメモ

</> 技術者募集

【Javascript】0で割ると?

0で除算するとどうなるかはプログラム言語によってさまざま。

例えばphpでは”php -r ’10/0;'” → Warning(警告)が発生。
MySQLでは”select 10/0″ → NULL(極力エラーで止めない方針だからか)。
PostgreSQLではエラーがでてSQLを実行できない。

ではJavascriptでは?

それぞれ、JavaScriptやECMA-262で定義されているもの。
各ブラウザの勝手な仕様ではない。

仕様によると、こうなる。

Infinity を掛けたものは全て Infinity であり、Infinity で割ったものは全て 0 。

なお、InfinityはNaNではない。それぞれ別のもの。

JavascriptはオーバーフローしてもInfinityにして処理を続けてくれる。まともな数値ではなくなるが、エラーで止まらない。

Infinityは、NaNやundefinedのような特殊な値と違い、通常の数値と同じように比較、演算できる。

スクリプトの処理中に0で割り算しちゃったらどうするんですか

Javascriptだと、何の問題もないですね。。。

エラーで停止するわけではないし、例外も投げないということと、無限大(Infinity、-Infinity)か非数(NaN)になるのを知っていれば何とかなるのでは。

ここに書いてある

Infinityプロパティ
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Properties/Infinity

参考

Numberオブジェクト
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Number

そのほかのグローバルプロパティ
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Properties

関連するメモ

コメント