Por que o Math.Round abre uma janela de impressão em um navegador no Try .NET

Hoje, a atenção do público foi atraída para um bug engraçado e ilógico descoberto no Try .NET , uma ferramenta projetada para incorporar exemplos interativos em C # na documentação. Você pode ver a edição em aberto no Github no link .

O código fornecido na execução (ao chamar o método Math.Round ) em vez do resultado esperado abre repentinamente uma janela de impressão no navegador:

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


imagem

Usando o rastreamento de erro e os pontos de interrupção, os usuários encontraram um motivo alegado para esse comportamento - ele estava oculto na biblioteca mono.js.

imagem

A resposta é simples. Aparentemente, alguém queria usar sua própria função print () em JS (ou confundi-la com console.log ), mas como não foi encontrada no escopo, o programa chama window.print () , que realmente deve abrir a janela de impressão da atual documento - porque window é um objeto global para o fluxo principal no navegador.

Esse fallback não foi percebido imediatamente, mas um usuário alega que esse erro foi corrigido em novembro passado .

Para evitar situações em que erros desse tipo ocorram, o projeto create-react-app mantém uma lista de variáveis ​​globais do navegador "confusas" , pois é bastante simples cometer um erro semelhante:

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

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


All Articles