Mengapa Math.Round membuka jendela cetak dari browser di Coba .NET

Hari ini, perhatian publik tertarik pada bug tidak logis lucu yang ditemukan di Try .NET , alat yang dirancang untuk menanamkan contoh interaktif dalam dokumentasi C #. Anda dapat melihat masalah terbuka di Github di tautan .

Kode yang diberikan saat eksekusi (saat memanggil metode Math.Round ) alih-alih hasil yang diharapkan tiba-tiba membuka jendela cetak dari browser:

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


gambar

Menggunakan jejak kesalahan dan breakpoint, pengguna menemukan alasan dugaan perilaku ini - itu disembunyikan di perpustakaan mono.js.

gambar

Jawabannya sederhana. Rupanya, seseorang ingin menggunakan fungsi print () mereka sendiri di JS (atau mengacaukannya dengan console.log ), tetapi karena tidak ditemukan dalam lingkup, program memanggil window.print () , yang benar-benar harus membuka jendela cetak saat ini dokumen - karena jendela adalah objek global untuk aliran utama di browser.

Fallback ini tidak segera diketahui, tetapi satu pengguna mengklaim bahwa kesalahan ini diperbaiki November lalu .

Untuk menghindari situasi di mana kesalahan semacam ini terjadi, proyek create-react-app menyimpan daftar variabel global browser yang "membingungkan" , karena cukup mudah untuk membuat kesalahan yang serupa:

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

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


All Articles