jsのsetTimeout()関数

Sep 21, 2017 am 09:45 AM
javascript settimeout

js では、setTimeout() 関数はどこにあっても、ローカル変数ではなくグローバル変数です。したがって、次の例の結果は驚くかもしれません:

function A() {
    this.b = function() {
        console.log(1)
    }
}
var c = new A()
setTimeout(c.b, 10)
ログイン後にコピー

上の例の出力結果が 1 であると思う人もいるかもしれませんが、結果は未定義です。これは、setTImeout() 関数がグローバル変数に内部の c.b を送信するためです。ただし、グローバル変数には属性 b がないため、未定義が返されます。

jsではsetTimeout()関数の動作仕組みはこんな感じですが、setInterval()関数も同様です。指定されたコードをこの実行から移動し、イベント ループの次のラウンドまで待ってから、指定された時間が到着したかどうかを確認します。到着した場合は、対応するコードが実行されます。到着しない場合は、イベント ループの次のラウンドまで待機して再判断します。これは、今回実行されるすべてのコードが実行されるまで、setTimeout で指定されたコードは実行されないことを意味します。

イベント LOOP の各ラウンドでは、「タスク キュー」で実行する必要があるタスクが実行されます。 setTimeout と setInterval は両方とも、タスクを「タスク キュー」の最後に追加します。したがって、実際には、現在のスクリプトのすべての同期タスクが実行されるまで待機し、その後、このイベント ループの「タスク キュー」のすべてのタスクが実行されるまで待機してから、実行を開始する必要があります。前のタスクが完了するまでにどれくらいの時間がかかるかは不明であるため、setTimeout と setInterval で指定されたタスクがスケジュールされた時間に従って実行されることを保証する方法はありません。

したがって、関数が以前にブロックされている場合、関数は実行されるまで待機してから実行されます。 js はシングルスレッドであるため、ブロックされやすくなります。

setTimeout() 関数では、遅延パラメーターに 0 または負の数を記述しても、最速の実行時間は 4 ミリ秒です。遅延パラメータが 0 または負の数の場合、実行を開始する前に、現在のステップの同期タスクとイベント ループ (タスク キュー) が実行されるまで待つ必要があります。パラメータが 0 または負の数であるため、関数は次のようになります。他の setTimeout() 関数よりもできるだけ早く実行し、パラメーターが 0 であるか、負の数値自体が同じ優先順位を持ちます。たとえば、

setTimeout('console.log(1)',0)
console.log(2)
ログイン後にコピー
-返された結果は2 1つまり、最初のパラメータはコンパイルする必要のあるコードまたは関数メソッドでなければなりません。したがって、上記の例では、console.log() は一重引用符で囲まれ、文字列になります。 setTimeout には、文字列をコンパイルするための eval() 関数があります。 console.log() メソッドを一重引用符で囲まない場合、遅延パラメータがあるかどうかに関係なく、setTimeout() 関数全体がすぐに実行されます。美的の Meiyun Smart Number インタビューで私が遭遇したこの質問と同じように:

setTimeout('console.log(1)',0)
setTimeout('console.log(2)',-1)
setTimeout('console.log(3)',-1)
setTimeout('console.log(4)',0)
ログイン後にコピー

返される結果は 1 2 3 4 です。一重引用符で囲むと、返される結果は 1 3 2 4 になります

setTimeout をクリアしたい場合タイマーの場合は、clearTimeout() 関数が必要です。具体的な使用法は次のとおりです:

console.log(1)

setTimeout(console.log(2),0)
  
console.log(3)
  
setTimeout(console.log(4),-1)
ログイン後にコピー

最後に、次の 3 つのコードを比較して上記の出力を確認してください:

var a = setTimeout('console.log(1)', 1)
clearTimeout(a)
ログイン後にコピー
for (var i = 0; i < 3; i++) {
    setTimeout(function() {
        console.log(i);
    }, 0);
    console.log(i);
}
ログイン後にコピー
for (var i = 0; i < 3; i++) {
    setTimeout((function() {
        console.log(i);
    })(i), 0);
    console.log(i);
}
ログイン後にコピー
この質問は、いくつかの JS スコープの問題を設計しています。 es5のスコープとes6のスコープの変更を紹介する記事を書きます。

以上がjsのsetTimeout()関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScriptでinsertBeforeを使用する方法 JavaScriptでinsertBeforeを使用する方法 Nov 24, 2023 am 11:56 AM

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

See all articles