。 (初心者は、setTimeout と setInterval が JavaScript 関数であると考えるかもしれませんが、これは間違いです。初心者は、JavaScript オブジェクト関数と DOM オブジェクト メソッドを簡単に混同してしまいます。)
さまざまなコードの下でそれがどのように見えるか推測してみましょう。ブラウザの結果はどうなるでしょうか?
function f(){
var s = ' 引数.長さ:' 引数.長さ '; ';
for(var i=0,n=arguments.length;is = ' [' 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 で呼び出された関数にパラメータを渡すことをサポートしていないことがわかります。ブラウザの世界の調和を図るために、関数呼び出しパラメータを新しい匿名関数にラップできます。例:
コードをコピー
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');
投稿は頭で行う作業ではなく、実際にはテキストを整理したり、例を書いたり、フォーマットしたりする物理的な作業であり、最も疲れるし、時間がかかります。

settimeout和setInterval的区别:1、触发时间,settimeout是一次性的,它在设定延迟时间之后执行一次函数,而setinterval是重复性的,它会以设定的时间间隔重复执行函数;2、执行次数,settimeout只执行一次,而setinterval会一直重复执行,直到被取消。

如何使用setInterval函数定时执行代码?在JavaScript中,setInterval函数是一个非常有用的函数,它可以定时执行一段代码。通过setInterval函数,我们可以在特定的时间间隔内重复执行指定的代码。本文将详细介绍如何使用setInterval函数,并提供具体的代码示例。一、setInterval函数的基本语法如下:setInterv

Window.setInterval() 方法的基本语法是“window.setInterval(function, delay)”,function是要重复执行的函数或代码块,delay是每次执行之间的时间间隔,以毫秒为单位。该方法是JavaScript中用于定时重复执行指定函数或代码的方法,它的使用非常简单,只需要传入要执行的函数或代码块以及重复执行的时间间隔。

可以使用clearInterval函数来停止由setInterval函数创建的定时器。setInterval函数会返回一个唯一的定时器ID,可以将该ID作为参数传递给clearInterval函数,以停止定时器的执行。

setInterval函数是JavaScript中的一个定时器函数,允许你设置一个间隔,并在每个间隔之后执行指定的代码,需要定期处理某些任务或实时更新页面元素的情况非常有用,要注意使用setInterval时的性能和可靠性问题,并根据需要进行优化。

setTimeout(function,duration)-该函数在duration毫秒后调用函数。这适用于一次执行。让我们看一个例子-它等待2000毫秒,然后运行回调函数alert(‘Hello’)-setTimeout(function(){alert('Hello');},2000);setInterval(function,uration)-此函数在每duration毫秒后调用function。这可以无限次进行。让我们看一个例子-它每2000毫秒触发一次警

setinterval用法是“setInterval(function, delay);”,“function”是要执行的函数,可以是函数表达式或函数引用,“delay”是执行函数之间的时间间隔,以毫秒为单位。setInterval是JavaScript中用于周期性执行代码的函数,它接受一个函数和一个时间间隔作为参数,会按照指定的时间间隔重复执行函数。

在JavaScript中使用clearTimeout函数取消setTimeout的计时器,需要具体代码示例在JavaScript中,setTimeout函数是用来在指定的时间延迟后执行一次特定的代码。而setInterval函数则是用来在指定的时间间隔内重复执行一段特定的代码。然而,在某些情况下,我们可能需要在定时器执行之前取消它。在这种情况下,就可以使用c


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

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