ホームページ ウェブフロントエンド jsチュートリアル さまざまなブラウザでの setTimeout と setInterval の違い_JavaScript スキル

さまざまなブラウザでの setTimeout と setInterval の違い_JavaScript スキル

May 16, 2016 pm 06:35 PM
setinterval settimeout

。 (初心者は、setTimeout と setInterval が JavaScript 関数であると考えるかもしれませんが、これは間違いです。初心者は、JavaScript オブジェクト関数と DOM オブジェクト メソッドを簡単に混同してしまいます。)

さまざまなコードの下でそれがどのように見えるか推測してみましょう。ブラウザの結果はどうなるでしょうか?

コードをコピー コードは次のとおりです。

function f(){
var s = ' 引数.長さ:' 引数.長さ '; ';
for(var i=0,n=arguments.length;i< n;i ){
s = ' [' i ']: ' 引数[ i] ';
}
アラート
}
setTimeout(f,"javascript","AAA")

私はここにいます ここで議論したいのは、いつどちらを使用するかということではなく、各ブラウザーでのこれら 2 つの方法の違いです。
当初、これら 2 つの方法が何らかの影響を与えるとは考えていませんでしたが、今回はそれらを整理して、皆さんと共有するために書き留めました。
setTimeout と setInterval のパラメーターと使用方法は同じですが、機能が異なるため、手間を省くために、setTimeout のみを例として説明し、例を示します。
setTimeout の最も一般的に使用される形式はおそらく次のとおりです:
コードをコピー コードは次のとおりです:

iTimerID = setTimeout(strJsCode, 50) //strJsCode は JS コードを含む文字列です
iTimerID = setTimeout(objFunction, 50) //objFunction は関数オブジェクトです

最初の呼び出しメソッドは、js コードを含む文字列を渡すことです。このメソッドの利点は簡潔であることですが、欠点は、操作効率が悪く、構文解析に役に立たず、潜在的なリスクがあることです。さらに重要なのは、処理がより複雑になり、これは eval の欠点と一致します。
したがって、通常は 2 番目の呼び出し方法を使用する方がよいと考えられます。 (以下の例はすべて 2 番目の呼び出しメソッドを使用しています)

次に、さまざまなブラウザーでのコードの最初の部分の結果を明らかにしましょう:
IE(6,7,8) は: 引数の長さ:0。 ;
Opera(6,7,8) は: 引数.length:2; [1]:AAA;
Firefox(3.0) は: 引数.length:3; :javascript; [1]:AAA; [2]:-15;
本当に「あなたはあなたの歌を歌い、私は私の歌を歌う」という大きな違いがあります。
Firefox (3.0) では、最後に取得される数値が特定されない場合があります。この問題については後で説明します。
(1) IE シリーズの setTimeout
まず、Microsoft が発行する DHTML リファレンス マニュアルに記載されている内容を見てみましょう。
setTimeout メソッド
指定されたミリ秒数が経過した後に式を評価します
構文
iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage])
vCode 指定された間隔が経過した場合に必須。
iMilliSeconds 数値を指定する。
sLanguage オプション。次の値のいずれかを指定します。
VBScript 言語は VBScript です。
MSDN の setTimeout の説明。 :
http://msdn.microsoft.com/en-us/library/ms536753(VS.85).aspx
つまり、setTimeout は 3 つのパラメーターを受け取り、スクリプト言語の種類を示します。さらに多くのパラメータを渡しても意味がありません。
つまり、IE では、次の両方が正しいことになります。
setTimeout('alert(1)', 50);
setTimeout('msgbox "終了、再試行、無視、それはあなた次第です。", vbAbortRetryIgnore vbDefaultButton2, "教えてください"', 50, ' VBScript' );
(2) Mozilla シリーズの setTimeout
Mozilla 公式 Web サイトの Gecko DOM リファレンス マニュアルの内容を見てみましょう:
window.setTimeout
概要
コードを実行します
構文
var timeoutID = window.setTimeout(func, late, [param1, param2, ...]); );
最初の 2 つのパラメータは同じであり、違いはありませんが、3 番目のパラメータは異なります。
現在、複数言語のスクリプトをサポートしているのは IE ブラウザだけであり、他のブラウザは js スクリプトのみをサポートしているため、言語タイプのパラメータを渡す必要はありません。
Mozilla は、setTimeout に渡された 3 番目以降のパラメータを、前の関数にパラメータとして順番に渡します。
Firefox、Opera、Safari、Chrome などにも同じことが当てはまります。
しかし、Mozilla が setTimeout には「Lateness」引数と呼ばれるバグがあると述べていることに気付きました。
「Lateness」引数
Mozilla では、setTimeout によって呼び出される関数には追加の「Lateness」引数が渡されます。 、タイムアウトの遅延 (ミリ秒単位) (バグ 10637 およびバグ 394769 を参照)
これは、冒頭の例の Firefox (3.0) での独自の数値のソースです。
Mozilla での setTimeout の手順:
https://developer.mozilla.org/en/DOM/window.setTimeout
(3) 他のブラウザ シリーズ (Opera、Safari、Chrome) での setTimeout
基本的には Mozilla シリーズと同じですが、Mozilla シリーズではパラメーターが 1 つ追加されているためバグはありません。

Wulin 外伝: setTimeout の使い方のヒント
(1) IE 関数の受け渡しで setTimeout を呼び出すパラメータ
上記の分析から、IE は setTimeout で呼び出された関数にパラメータを渡すことをサポートしていないことがわかります。ブラウザの世界の調和を図るために、関数呼び出しパラメータを新しい匿名関数にラップできます。例:




コードをコピー

コードは次のとおりです。 function f(a){ alert (a); } // setTimeout(f,50,'hello') // 非 IE の場合
setTimeout(function(){f('hello')}, 50); // 一般
var str='hello'
setTimeout(function(){f(str)},50); //一般


(2); question
setTimeoutで呼び出される関数が実行されるときのコンテキストはグローバルコンテキストであり、setTimeoutメソッドが呼び出されるときのコンテキストではありません。したがって、setTimeout の最初のパラメータを持つ関数が実行されるとき、これはウィンドウを指します。setTimeout メソッドを呼び出すときにこれを保持する必要がある場合は、これを渡す必要があります。例:



コードをコピー

コードは次のとおりです:

function person(name){
this.name=name;
var f=function(){alert('私の名前は ' this.name)}; (f,50); //エラー
var THIS=this;
setTimeout(function(){f.apply(THIS)},50); //正しい、ユニバーサル
setTimeout(function()) {f.call(THIS)},50); //正しい、普遍的な
}
new Person('Jack');

これですべてです。
投稿は頭で行う作業ではなく、実際にはテキストを整理したり、例を書いたり、フォーマットしたりする物理的な作業であり、最も疲れるし、時間がかかります。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

settimeout と setinterval の違いは何ですか settimeout と setinterval の違いは何ですか Aug 15, 2023 pm 02:06 PM

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

setInterval 関数を使用してコードを定期的に実行するにはどうすればよいですか? setInterval 関数を使用してコードを定期的に実行するにはどうすればよいですか? Nov 18, 2023 pm 05:00 PM

setInterval 関数を使用してコードを定期的に実行するにはどうすればよいですか? JavaScript の setInterval 関数は、コードを定期的に実行できる非常に便利な関数です。 setInterval 関数を使用すると、指定したコードを特定の時間間隔内で繰り返し実行できます。この記事では、setInterval関数の使い方と具体的なコード例を詳しく紹介します。 1. setInterval 関数の基本構文は次のとおりです。

setIntervalを停止する方法 setIntervalを停止する方法 Dec 11, 2023 am 11:39 AM

clearInterval 関数を使用すると、setInterval 関数によって作成されたタイマーを停止できます。 setInterval 関数は一意のタイマー ID を返します。これをパラメーターとして ClearInterval 関数に渡すと、タイマーの実行を停止できます。

Window.setInterval() メソッドの使用方法 Window.setInterval() メソッドの使用方法 Aug 31, 2023 am 09:33 AM

Window.setInterval() メソッドの基本構文は「window.setInterval(function, late)」です。function は繰り返し実行される関数またはコード ブロック、lay は各実行間の時間間隔 (ミリ秒単位) です。このメソッドは、指定した関数またはコードをスケジュールされた時刻に繰り返し実行するために使用される JavaScript のメソッドです。その使用法は非常に簡単で、実行する関数またはコード ブロックと繰り返し実行する時間間隔を渡すだけです。

JavaScript の setTimeout() と setInterval() の違いは何ですか? JavaScript の setTimeout() と setInterval() の違いは何ですか? Sep 01, 2023 pm 03:01 PM

setTimeout(function,duration) - この関数は、継続時間ミリ秒後に関数を呼び出します。これは 1 回の実行で機能します。例を見てみましょう - 2000 ミリ秒待ってから、コールバック関数を実行します。 is この関数は、持続時間ミリ秒ごとに呼び出されます。これは無制限に何度でも実行できます。例を見てみましょう - 2000 ミリ秒ごとにアラームをトリガーします

セット間隔 セット間隔 Aug 02, 2023 am 10:17 AM

setInterval 関数は JavaScript のタイマー関数で、間隔を設定し、各間隔の後に指定したコードを実行できます。特定のタスクを定期的に処理する必要がある場合や、ページ要素がリアルタイムで更新される場合に非常に便利です。次の点に注意してください。 setInterval を使用する場合のパフォーマンスと信頼性の問題を解決し、必要に応じて最適化します。

setinterval の使用方法の詳細な説明 setinterval の使用方法の詳細な説明 Sep 12, 2023 am 09:55 AM

setinterval の使用法は「setInterval(function, late);」です。「function」は実行する関数であり、関数式または関数参照を指定できます。また、「lay」は関数を実行する間の時間間隔 (ミリ秒単位) です。 setInterval はコードを定期的に実行するために使用される JavaScript の関数であり、関数と時間間隔をパラメータとして受け取り、指定された時間間隔に従って関数を繰り返し実行します。

setTimeout タイマーをキャンセルするには、JavaScript で clearTimeout 関数を使用します。 setTimeout タイマーをキャンセルするには、JavaScript で clearTimeout 関数を使用します。 Nov 18, 2023 am 08:05 AM

JavaScript で clearTimeout 関数を使用して setTimeout タイマーをキャンセルするには、特定のコード サンプルが必要です。JavaScript では、setTimeout 関数を使用して、指定された時間遅延の後に特定のコードを実行します。 setInterval 関数は、指定された時間間隔内で特定のコードを繰り返し実行するために使用されます。ただし、場合によっては、タイマーを実行する前にキャンセルする必要がある場合があります。この場合、c を使用できます。

See all articles