JavaScript コールスタックと setTimeout の使用法_JavaScript スキルの詳細な分析
setTimeout は、次のような関数の実行を遅らせるために Javascript でよく使用されます。
setTimeout(function() {alert(1)}, 0);
alert(2)
}
支払いこのコードに注目してください。 setTimeout 遅延が 0 に設定されているため、遅延は 0 ミリ秒、つまり 1、2 ミリ秒間で実行されるように見えます。しかし、実際の実行結果は確かに 2,1 です。なぜ?これは、JavaScript 呼び出しスタックと setTimeout の関数から始まります。
まず、JavaScript はシングルスレッドです。つまり、同時に実行されるコードは 1 つだけであるため、各 JavaScript コード実行ブロックは他の非同期イベントの実行を「ブロック」します。次に、他のプログラミング言語と同様に、JavaScript の関数呼び出しもスタックを通じて実装されます。関数 a を実行するとき、最初に a がスタックにプッシュされます。 setTimeout がalert(1) に追加されていない場合は、次にalert(1)がスタックにプッシュされ、最後にalert(2)がスタックにプッシュされます。しかし、setTimeout をalert(1) に追加した後、alert(1) は新しいスタックに追加され、待機して「できるだけ早く」実行されます。これはできるだけ早く実行するという意味で、a のスタックが完了したらすぐに実行するため、実際の実行結果は最初にalert(2)、次にalert(1)になります。ここで、setTimeout は実際に現在の関数呼び出しスタックからalert(1) を削除します。次の例を見てください:
このような関数の目的は、次の文字をすべて削除することです。文字を入力するたびに現在の入力内容が表示されますが、実際の効果はアラートが表示されてボタンが押される前の内容です。ここでは、setTimeout(0) を使用してこれを実現できます。
このようにonkeydown イベントがトリガーされ、アラートが次の呼び出しスタックに入れられ、onkeydown イベントによってトリガーされたスタックが閉じられると実行が開始されます。もちろん、ブラウザにはニーズを満たす onkeyup イベントもあります。
このような setTimeout の使用法は、実際のプロジェクトでは依然として頻繁に発生します。たとえば、ブラウザは、DOM を変更する前に関数スタックが終了するまで賢明に待機します。この関数スタックでページの背景が最初に白から赤に設定され、その後白に戻された場合、ブラウザは DOM が変更されていないと判断します。変更され、これを無視するという 2 つの文があるため、setTimeout を通じて「白に戻す」関数を次のスタックに追加できます。これにより、背景色が変更されたことを確認できます (ただし、すぐには気付かない可能性があります)。
つまり、setTimeout は Javascript 関数呼び出しの柔軟性を高め、関数の実行シーケンスをスケジュールするのに非常に便利です。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









スタンバイは iOS 17 アップデートの新機能で、携帯電話がアイドル状態のときにすぐに情報にアクセスするための新しく強化された方法を提供します。 StandBy を使用すると、時間を確認したり、今後のイベントを表示したり、カレンダーを参照したり、現在地の天気予報の最新情報を入手したりすることができます。起動すると、充電中に横向きに設定すると、iPhone が直感的にスタンバイ モードに入ります。この機能は、ベッドサイドテーブルなどのワイヤレス充電ポイント、または日常業務中に iPhone の充電から離れているときに最適です。スタンバイ中に表示されるさまざまなウィジェットをスワイプすることで、さまざまなアプリのさまざまな情報にアクセスできます。ただし、好みや頻繁に必要な情報に基づいて、これらのウィジェットを変更したり、一部を削除したりすることもできます。それでは、詳しく見ていきましょう

スタンバイは、iOS 17 の新しいカスタマイズ可能なロック画面モードで、iPhone が充電中に横になっているときにアクティブ化できます。これは、iPhone の一種のスマート ディスプレイと考えてください。たとえば、キッチン、机、ナイトスタンドなどでデバイスを充電しているときに、離れた場所から閲覧できるさまざまな閲覧可能な情報画面にすばやくアクセスできます。カスタムスタンバイウィジェットは 3 つの画面で構成されており、iPhone のディスプレイを横にスワイプすることでアクセスできます。最初の画面にはインタラクティブなウィジェットが配置され、左にスワイプすると 2 番目と 3 番目の画面が表示され、それぞれフォト ギャラリーからの写真と大きな時計ディスプレイが表示されます。ウィジェット画面は、並べて表示される 2 つのインタラクティブなウィジェット スタックで構成されており、個別に上下にスワイプできます。これらのスタックはホーム画面ウィジェット スタックのようなものです

settimeout と setInterval の違い: 1. トリガー時間、settimeout は 1 回限りで、遅延時間を設定した後に関数を 1 回実行しますが、setinterval は反復的で、設定された時間間隔で関数を繰り返し実行します; 2. 実行時間、settimeoutは一度だけ実行され、setintervalはキャンセルされるまで繰り返し実行されます。

Golang は、同時プログラミングにおける独自の設計概念を備えた人気のあるプログラミング言語です。 Golang では、スタック (ヒープとスタック) の管理は非常に重要なタスクであり、Golang プログラムの動作メカニズムを理解するために不可欠です。この記事では、Golang のスタックの違いを詳しく掘り下げ、具体的なコード例を通してスタック間の違いと関連性を示します。コンピューター サイエンスでは、スタックはメモリを割り当てる 2 つの一般的な方法ですが、メモリ管理とデータ ストレージが異なります。

Java スタック オーバーフロー例外を解決する方法には次が含まれます: 1. コード ロジックを変更して無限再帰と循環依存関係を回避する; 2. Java 仮想マシンのスタック サイズを増やす; 3. 末尾再帰最適化を使用する; 4. 再帰の代わりに反復を使用する; 5. を使用するマルチスレッド。 Java スタック オーバーフロー例外は通常、深すぎる再帰呼び出しまたは循環依存関係によって発生します。関数がそれ自体を再帰的に呼び出し、特定の時点で再帰を終了しない場合、スタック オーバーフローが発生します。これは、関数呼び出しごとに新しいスタック フレームがスタックに追加され、呼び出されすぎるとスタックがオーバーフローするためです。

ヒープとスタックの違いは次のとおりです: 1. スタックは線形データ構造であるのに対し、ヒープはツリー状データ構造です; 2. スタックのメモリ割り当て方法は自動であるのに対し、ヒープのメモリ割り当てと解放は自動です。手動管理が必要; 3. スタックのメモリ割り当て速度は比較的速いが、ヒープのメモリ割り当て速度は遅い; 4. スタックのサイズは固定されているが、ヒープのサイズは必要に応じて動的に調整できる; 5. スタックはローカル変数、関数呼び出し、再帰などの管理に適しており、ヒープは長期間保存する必要があるデータ、動的データ構造、大規模データなどに適しています。

Java は StackTraceElement クラスを使用してメソッド呼び出しスタックを追跡します はじめに: ソフトウェア開発において、デバッグは非常に重要なプロセスであり、問題を特定し、エラーの原因を見つけるのに役立ちます。デバッグ プロセス中に、メソッド呼び出しのスタックを理解すると、問題をより早く見つけることができます。 Java では、StackTraceElement クラスを使用してメソッド呼び出しスタックをトレースできます。 1. StackTraceElement クラスの概要: スタック

PHPSPL データ構造: 概要 phpSPL データ構造は、スタック、キュー、配列、ハッシュ テーブルなどの共通データ構造のセットを提供する PHP 標準ライブラリ (SPL) のコンポーネントです。これらのデータ構造は、さまざまなデータ型を効率的に処理し、アプリケーション開発を簡素化する一貫したインターフェイスを提供するように最適化されています。主要なデータ構造 スタック スタックは、後入れ先出し (LIFO) 原則に従った順序付けされたコレクションです。スタックでは、最後に追加された要素が最初に削除される要素になります。 SPL は、スタックを表す SplStack クラスを提供します。次の例は、SplStack の使用方法を示しています: $stack=newSplStack();$stack->push(1
