「非同期 Javascript」を深く掘り下げていくと、ジレンマが生じます。console.log() は本当に非同期なのかということです。本で主張されていますか?コンソール ロギングの複雑さを調べて、根底にある真実を明らかにしましょう。
console.log() は標準化されていない関数であり、異なるバージョン間で大幅に変化する可能性がある予測できない動作を持っています。開発者ツールの。したがって、この本の主張はもはや有効ではない可能性があります。
理論的には、console.log() が非同期で動作した場合、クエリで言及されているコード スニペットは結果として「{foo:bar}」を生成するはずです。ただし、ほとんどのブラウザは console.log() を同期的に扱うようです。
console.log() の同期または非同期の性質に関係なく、コードの動作は影響を受けません。 。この関数にはコールバックがなく、渡された値は即座に参照および計算されます。
ただし、コンソールの内部動作により、ある程度の非同期性が導入されます。ログに記録された値を保存する必要があり、そのような値のレンダリングは同期的に行われます。コンソール内のログに記録されたオブジェクトとの対話も非同期動作を示します。
コンソールは、変更可能なオブジェクトのクローン作成または参照を選択できます。オブジェクト展開により、これらのメソッドを区別できるようになります。参照が使用されている場合、展開されたビューには、ロギング後に行われた変更を含む、オブジェクトの現在の状態が表示されます。
Chrome の JavaScript コンソールは、遅延評価手法を採用しています。必要になるまでログ値の評価を遅らせます。このアプローチにより、パフォーマンスへの影響が最小限に抑えられ、レンダリング効率が向上します。
潜在的な不一致を軽減するには、ログに記録されたオブジェクトが、理想的には console.log(JSON.stringify(obj) を通じて) シリアル化されていることを確認してください。 )。ただし、この解決策は非円形の小さなオブジェクトに限定されます。
より信頼性の高い代替方法は、デバッグにブレークポイントを利用することです。これにより、実行が停止され、コード実行の任意の時点で値を正確に検査できるようになります。さらに、最適な結果を得るには、ロギングをシリアル化可能かつ不変のデータに制限してください。
以上がJavaScript の「console.log()」は本当に非同期ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。