Ich habe laufen Google Schließung Compiler für die nächste:Google Schließung Compiler weist keine Division durch Null
alert(1/0);
mit dem Befehl:
java -jar node_modules\google-closure-compiler\compiler.jar --warning_level=VERBOSE test.js
und es hat nichts berichten. Ich erwartete, es sagt etwas über Devide durch Null, da die Referenz (https://developers.google.com/closure/compiler/docs/error-ref) Erwähnungen über
JSC_DIVIDE_BY_0_ERROR
:Division durch 0
Dieser Fehler bedeutet, dass Sie eine arithmetische Teilung Ausdruck mit einem Nenner von 0. Die Division durch Null zur Laufzeit erzeugt einen Laufzeitfehler.
Ich habe auch getestet, den Beispielcode für JSC_BITWISE_OPERAND_OUT_OF_RANGE
:
var y = 1024 * 1024 * 1024 * 2 >> 2;
und in diesem Fall genau google Schließung Compiler das Problem hinweisen.
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;
^
Wie kann ich JSC_DIVIDE_BY_0_ERROR
für die Top-Quellcode?
* "Die Division durch Null zur Laufzeit erzeugt einen Laufzeitfehler." * - Nein, in JavaScript erzeugt eine Division durch Null den Wert "Infinity". (Was ein * logischer * Fehler in Ihrem Algorithmus sein kann, aber es ist kein Laufzeitfehler im Sinne einer Ausnahme.) – nnnnnn
Wollen Sie damit sagen, dass die Beschreibung in Bezug auf den Closing-Compiler nicht richtig ist? Wie auch immer, es ist mir egal, was hier in der Laufzeit passiert. Ich möchte es statisch mit Closing-Compiler überprüfen. – xylosper
Wenn es als eine Beschreibung der Funktionsweise von JavaScript gedacht ist, ist es definitiv falsch, aber ich weiß nicht, wie diese Closure Compiler-Optionen funktionieren sollen. (Wenn man statisch nach Division durch Null sucht, kann man das natürlich nur für Konstanten tun, denn wenn der Code '1/x' sagt, kann der Compiler nicht sagen, was' x' zur Laufzeit ist, aber ich denke, das weißt du.) – nnnnnn