Warum öffnet Math.Round in Try .NET ein Druckfenster über einen Browser?

Heute wurde die Öffentlichkeit auf einen lustigen unlogischen Fehler aufmerksam gemacht, der in Try .NET entdeckt wurde , einem Tool, mit dem interaktive Beispiele in C # in die Dokumentation eingebettet werden können. Sie können die offene Ausgabe auf Github unter dem Link sehen .

Der angegebene Code öffnet beim Ausführen (beim Aufrufen der Math.Round- Methode) anstelle des erwarteten Ergebnisses plötzlich das Druckfenster des Browsers:

using System; public class Example { public static void Main() { var x = Math.Round(11.1, MidpointRounding.AwayFromZero); } } 


Bild

Mithilfe der Fehlerverfolgung und der Haltepunkte haben Benutzer einen mutmaßlichen Grund für dieses Verhalten gefunden - es wurde in der Bibliothek mono.js ausgeblendet .

Bild

Die Antwort ist einfach. Anscheinend wollte jemand seine eigene print () - Funktion in JS verwenden (oder sie mit console.log verwechseln), aber da es keine im Bereich gab, ruft das Programm window.print () auf , was das Druckfenster des aktuellen Fensters wirklich öffnen sollte document - weil window ein globales Objekt für den Hauptstrom im Browser ist.

Dieser Fallback wurde nicht sofort bemerkt, aber einer der Benutzer behauptet, dass dieser Fehler im letzten November behoben wurde .

Um Situationen zu vermeiden, in denen Fehler dieser Art auftreten, führt das Projekt create-react-app eine Liste "verwirrender" globaler Browservariablen , da es recht einfach ist, einen ähnlichen Fehler zu machen:

 handleClick() { //   `event` this.setState({ text: event.target.value //    `event`- ! }); } 

Source: https://habr.com/ru/post/de456880/


All Articles