Sebagai produk sampingan dari optimasi kode yang dilakukan oleh browser modern, saat debugging, Anda tidak dapat "melihat" semua variabel yang "faktual" berada dalam ruang lingkup. Ini dikenal dan telah dibahas dalam pertanyaan sebelumnya di SO . Fitur ini, walaupun sangat berguna dalam produksi sangat mengganggu saya selama pengembangan, ini memperlambat saya (yang seharusnya sudah jelas.)
Sekarang pertanyaan saya adalah, adakah cara untuk mematikan perilaku ini? Dapatkah saya mengedit beberapa file konfigurasi, atau apakah ada plugin browser, atau mungkin ada "versi build khusus untuk pengembang" dari browser yang dapat dieksekusi? Saya suka mengetik kode saya ke konsol segera ketika saya sedang menulis kode baru, jadi ini benar-benar menggangguku.
UPDATE / EDIT
Berikut adalah solusi parsial, kredit kepada Paul1365972.
Anda harus memulai browser chrome dari baris perintah, dengan opsi khusus, seperti:
- Tutup Chrome sepenuhnya
- Jalankan Chrome dari konsol dengan
"C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" --js-flags="--allow-natives-syntax"
itu untuk windows OS lain yang serupa. - Buka konsol pengembang dan jalankan
"%GetHeapUsage()"
. Jika Anda memulai Chrome dengan benar dengan opsi ini, sebuah nomor akan dicatat ke konsol, jika tidak Anda akan mendapatkan kesalahan sintaksis.
Dengan flag baris perintah ini, Anda dapat 'berbicara dengan mesin V8' dengan perintah yang dimulai dengan %
, yang merupakan kesalahan sintaksis dalam JavaScript biasa. Daftar perintah V8 yang tersedia seperti ini diberikan dalam jawaban Paulus .
Ada %NeverOptimizeFunction()
dalam daftar itu, yang merupakan sesuatu yang sepertinya harus saya panggil dan selesaikan. Sayangnya, fungsi itu tidak melakukan apa yang saya harapkan, seperti yang ditunjukkan pada tangkapan layar berikutnya.
((( Tautan lain dari jawaban Paul (modul node v8-native) tidak penting bagi kami di sini dalam konteks ini. Yang perlu dilakukan hanyalah membungkus satu-liner di sekitar panggilan fungsi "%" sehingga kode tidak macet) browser yang bukan v8.)))
(((Saya ingat saat ini berhasil (ketika optimasi ini belum ditemukan / diimplementasikan). Saya tidak tahu berapa lama yang lalu. Sepuluh tahun? 15 tahun? Sesuatu seperti itu. Apa versi Chrome terakhir (jika apa saja) dan apa versi firefox terakhir (lebih yakin di sini bahwa itu ada) di mana Anda bisa melakukannya? Ini tidak akan memberi Anda karunia, tetapi itu akan membuat Anda mendapatkan suara positif, jika Anda kebetulan tahu dan mempostingnya sebagai jawaban .)))
SOLUSINYA
TERIMA KASIH PETR SRNICEK
PERTANYAAN BARU
Meskipun solusi Petr banyak membantu, itu tidak sempurna. Pertanyaan ini terlalu panjang, jadi saya memposting pertanyaan baru tentang bagaimana solusi Petr dapat ditingkatkan. (Tentu saja saya dapat mengedit pertanyaan ini di sini, tetapi itu akan terasa "tidak historis", jika Anda tahu apa yang saya maksud.)
v8-natives
perpustakaan hanya membungkus% panggilan penting dalam kode di perpustakaan sederhana yang harus noops
di browser atau node yang tidak dimulai pada --allow-pribumi-sintaks khusus ..
%NeverOptimizeFunction(foo)
saya hanya memanggilnya juga untuk bodyOnload, "hanya karena", berpikir "baik, itu tidak akan sakit". Masalahnya adalah bahwa foo
TIDAK dioptimalkan seperti yang saya harapkan. Variabel lorem
tidak terlihat. Katakanlah saya ingin menulis beberapa kode yang akan masuk ke fungsi foo. Alih-alih mengetiknya ke editor teks saya, saya mengetiknya ke konsol dev (saat debugger duduk di foo), lihat apakah itu melakukan apa yang saya inginkan, dan kemudian salin / tempel dari konsol ke editor teks saya. Itulah bagaimana saya suka bekerja. Dan tidak bisa. Karena optimasi. Mendapatkan?
--js-flags
(termasuk beberapa yang berhubungan dengan TurboFan ) serta dengan beberapa perintah asli V8 sebelum Paul1365972 memposting jawabannya tetapi saya tidak dapat mencapai perilaku yang diinginkan. Saya percaya bahwa pendekatan ini mungkin jalan buntu. Mungkin bermanfaat untuk menambahkan [v8]
tag pada pertanyaan ini. Seseorang dengan pemahaman mendalam tentang cara kerja V8 dalam mungkin dapat mengklarifikasi apakah ini cara untuk pergi atau mungkin mengarahkan Anda ke arah yang benar.