を報告しない私は、次のGoogleの閉鎖コンパイラ実行した:コマンドを使用して、Googleの閉鎖コンパイラは、ゼロ除算
alert(1/0);
:
java -jar node_modules\google-closure-compiler\compiler.jar --warning_level=VERBOSE test.js
をし、それが何かを報告しません。
デバイド
0により、このエラーが分母であなたその算術除算式を意味します。私は、参照(https://developers.google.com/closure/compiler/docs/error-ref)が約
JSC_DIVIDE_BY_0_ERROR
言及ので、それはdevideゼロによるについて何かを言う期待しました実行時に0で除算すると実行時エラーが発生します。
私もJSC_BITWISE_OPERAND_OUT_OF_RANGE
のコード例テストしてみた:
var y = 1024 * 1024 * 1024 * 2 >> 2;
をし、この場合には、Googleの閉鎖コンパイラは正確に問題を指摘しています。
test.js:2: WARNING - Operand out of range, bitwise operation will lose information: NUMBER 2.147483648E9 2 [length: 22] [source_file: test.js]
var y = 1024 * 1024 * 1024 * 2 >> 2;
^
トップソースコードにはどのようにしてJSC_DIVIDE_BY_0_ERROR
を取得できますか?
*「実行時に0で除算すると実行時エラーが発生します。」* - JavaScriptではゼロで除算した値が「無限大」ではありません。 (あなたのアルゴリズムでは* logic *エラーかもしれませんが、例外の意味ではランタイムエラーではありません) – nnnnnn
クロージャコンパイラを参照する記述が正しくないと言っていますか?とにかく、私はここで実行時に何が起こるか気にしない。私はそれを静的にクロージャコンパイラを使用してチェックしたい。 – xylosper
JavaScriptがどのように動作しているかのデモが意図されているのであれば間違いは間違いですが、Closure Compilerのオプションがどのように動作するはずです。 (ゼロによる除算を静的にチェックすることに関しては、コードが '1/x'と言うとコンパイラは実行時に' x'が何になるのかを知ることができないので、定数でしかできません。 – nnnnnn