最近のブラウザーで行われたコード最適化の副産物として、デバッグ中に、「実際に」スコープ内にあるすべての変数を「見る」ことはできません。これはよく知られており、 の前の質問でSO で対処されています。この機能は、本番環境では確かに便利ですが、開発中に私を非常に悩ませますが、遅くなります(それは明らかなはずです。)
今私の質問は、この動作をオフにする方法はありますか?構成ファイルを編集できますか、それともブラウザプラグインがありますか、それともブラウザ実行可能ファイルの「開発者向けの特別なビルドバージョン」がありますか?新しいコードを書いているとき、すぐにコードをコンソールに入力するのが好きなので、これは本当に私を悩ませています。
UPDATE/EDIT
これは、部分的な解決策です。Paul1365972の功績です。
chromeブラウザをコマンドラインから起動し、次のような特別なオプションを指定する必要があります。
"C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" --js-flags="--allow-natives-syntax"
を使用して実行します。これは、他のWindows OSと同様です。"%GetHeapUsage()"
を実行します。オプションでChrome=を適切に開始した場合、番号がコンソールに記録されます。そうでない場合、構文エラーが発生します。このコマンドラインフラグを使用すると、単純なJavaScriptの構文エラーである_%
_で始まるコマンドを使用して、「V8エンジンと通信する」ことができます。この種の利用可能なV8コマンドのリストは、 Paulの回答で示された でした。
そのリストには%NeverOptimizeFunction()
があります。これは、呼び出して実行する必要があるもののように見えました。残念ながら、次のスクリーンショットに示されているように、その関数は私が望んでいたことを行いません。
(((Paulの回答からの 他のリンク (v8-nativesノードモジュール)は、このコンテキストではここでは重要ではありません。「%」関数呼び出しを1行で囲むので、コードはv8以外のブラウザはクラッシュしません。)))
((これが機能したとき(この最適化がまだ発明/実装されていないとき)を覚えています。どのくらい前のことかわかりません。10年ですか?15年ですか?そのようなものです。最後は何でしたかChromeバージョン(存在する場合)と、Firefoxの最後のバージョン(存在する場合はここで確認できます)はどこでできますか?賞金は獲得できませんが、賛成票が得られます。たまたまそれを知り、回答として投稿してください。)))
ソリューション
ありがとうPETR SRNICEK
新しい質問
ペトルのソリューションは多くのことを助けますが、完璧ではありません。この質問は長くなりすぎているので、Petrのソリューションをどのように改善できるかについて、 新しい質問 を投稿しました。 (もちろん、ここでこの質問を編集することもできますが、私が何を意味するのかを知っていれば、それは「非歴史的」に感じるでしょう。)
私はこの質問が実際の答えを持っていることを本当に望みます。以下は本当の答えではなく、その場しのぎです。静的分析を使用して、if (false) { console.log(variables, from, closures); }
形式の愚かなヘルパーコードを作成できるヘルパーツールを作成しました(問題のスクリーンショットを参照)-コードに貼り付けると、愚かなステートメントが作成され、コピーできます、それからそれをタイプする必要はありません。このすべてのコピーと貼り付けにも時間がかかるので、それが大きな効果があるかどうかはわかりませんが、それは私が得たものです。