ホームページ ウェブフロントエンド jsチュートリアル SetTimeout には実際に 3 番目のパラメータがありますか?

SetTimeout には実際に 3 番目のパラメータがありますか?

Dec 09, 2019 pm 05:47 PM
settimeout パラメータ

SetTimeout には実際に 3 番目のパラメータがありますか?

#setTimeout には実際に 3 番目のパラメータがありますか?

setTimeout について言えば、誰もがよく知っており、その使用法は非常に簡単です:

setTimeout(fun, late)

しかし、信じられないかもしれませんが、長年使用されてきた setTimeout には、実際には 3 番目のパラメータがあります。 setTimeout の 3 番目のパラメータを見てみましょう。

[関連コースの推奨事項:

JavaScript ビデオ チュートリアル]

まず簡単なコードを見てみましょう:

setTimeout(function(x) {
    console.log(x);
}, 1000, 1);
ログイン後にコピー

コンソールは 1 を出力します。パラメーターの追加を続行できないのはなぜですか?引き続き次のコードを見てみましょう。

setTimeout(function(x,y) {
    console.log(x+y);
}, 1000, 1, 2);
ログイン後にコピー

コンソール出力は 3 です。これは明らかに 3 番目と 4 番目のパラメーターの合計です。


これを見た多くの友人は、そう、setTimeout の 3 番目のパラメータが setTimeout の最初の関数のパラメータであることに気づくはずです。

MDN https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout をクエリすると、3 番目のパラメータの説明を確認できます:

var timeoutID = scope.setTimeout(function[, delay, arg1, arg2, ...]);
var timeoutID = scope.setTimeout(function[, delay]);
var timeoutID = scope.setTimeout(code[, delay]);
ログイン後にコピー

So正確に言うと、setTimeout には無数のパラメータを含めることができますが、3 番目のパラメータからは

オプションのパラメータになります。

さて、この機能を理解した後は、どのような問題を解決できるでしょうか?最も古典的な方法は、for ループ内で setTimeout を使用することです。

for(var i = 0; i<6; i++) {
    setTimeout(function() {
        console.log(i);
    }, 1000);
}
ログイン後にコピー

上記の例は典型的な面接の質問です。setTimeout は非同期操作であるため、6 が 6 回連続して出力され、setTimeout が実行されるまでに for ループが実行され、i が実行されます。 6 に等しいため、6 の 6 倍が出力されます。いくつかの解決策をまとめました。興味のある方は、私の前回のブログ「for ループでの setTimeout の使用について」を読んでください。このブログの最後で、setTimeout の 3 番目のパラメーターの使用について説明しました。戻りましょう。このアプローチを確認してください。

for(var i=0;i<6;i++) {
    setTimeout(function(j) {
        console.log(j);
    }, 1000, i);
}
ログイン後にコピー

渡される各パラメータはforループから取得した値なので、0~5が順に出力されます。もちろん、これは依然としてスコープの問題ですが、ここでは setTimeout の 3 番目のパラメーターが i の値を保存します。このソリューションはクロージャを使用するよりもはるかに軽量です。


さらに、3 番目のパラメータは関数としても使用できます。

for(var i=0;i<6;i++) {

    setTimeout(function(j) {

        console.log(j);

    }, 1000, i);

}
ログイン後にコピー

最終出力は、最初は 0、2 回目は 1 です。


3 番目のパラメータを最初に実行してから関数が実行されることもわかります。

最後に、3 番目のパラメーターを使用するときに注意する必要があるのは、互換性の問題です。IE9 および以前のバージョンとの互換性が必要な場合は、MDN が提供するコードを導入する必要があります。古い IE と互換性がある

https://developer.mozilla .org/zh-CN/docs/Web/API/Window/setTimeout#古い環境 (polyfill) と互換性がある 、ポータルはここに掲載されます。興味があるなら、見てみてください。

以下は MDN での互換性の説明です:

Note: Passing additional arguments to the function in the first syntax does not work in Internet Explorer 9 and below. If you want to enable this functionality on that browser, you must use a polyfill (see the Polyfill section).
ログイン後にコピー

この記事は

js チュートリアル 列からのものです。ぜひ学習してください。

以上がSetTimeout には実際に 3 番目のパラメータがありますか?の詳細内容です。詳細については、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)

PHP バージョン 5.4 の新機能: 呼び出し可能な型ヒント パラメーターを使用して呼び出し可能な関数またはメソッドを受け入れる方法 PHP バージョン 5.4 の新機能: 呼び出し可能な型ヒント パラメーターを使用して呼び出し可能な関数またはメソッドを受け入れる方法 Jul 29, 2023 pm 09:19 PM

PHP5.4 バージョンの新機能: 呼び出し可能な型ヒント パラメーターを使用して呼び出し可能な関数またはメソッドを受け入れる方法 はじめに: PHP5.4 バージョンでは、非常に便利な新機能が導入されています。呼び出し可能な型ヒント パラメーターを使用して、呼び出し可能な関数またはメソッドを受け入れることができます。この新機能により、追加のチェックや変換を行わずに、関数やメソッドで対応する呼び出し可能なパラメーターを直接指定できるようになります。この記事では、呼び出し可能な型ヒントの使用法を紹介し、いくつかのコード例を示します。

製品パラメータとは何を意味しますか? 製品パラメータとは何を意味しますか? Jul 05, 2023 am 11:13 AM

製品パラメータは、製品属性の意味を指します。たとえば、衣類のパラメータには、ブランド、素材、モデル、サイズ、スタイル、生地、適用グループ、色などが含まれ、食品のパラメータには、ブランド、重量、素材、保健免許番号、適用グループ、色などが含まれ、家電のパラメータには、家電製品のパラメータが含まれます。ブランド、サイズ、色、原産地、適用可能な電圧、信号、インターフェース、電力などが含まれます。

PHP 警告: in_array() に対する解決策にはパラメーターが必要です PHP 警告: in_array() に対する解決策にはパラメーターが必要です Jun 22, 2023 pm 11:52 PM

開発プロセス中に、次のようなエラー メッセージが表示される場合があります: PHPWarning: in_array()expectsparameter。このエラー メッセージは、in_array() 関数を使用するときに表示されます。関数のパラメータの受け渡しが正しくないことが原因である可能性があります。このエラー メッセージの解決策を見てみましょう。まず、in_array() 関数の役割を明確にする必要があります。配列に値が存在するかどうかを確認します。この関数のプロトタイプは次のとおりです: in_a

i9-12900Hパラメータ評価リスト i9-12900Hパラメータ評価リスト Feb 23, 2024 am 09:25 AM

i9-12900H は 14 コア プロセッサです。使用されているアーキテクチャとテクノロジはすべて新しく、スレッドも非常に高速です。全体的な動作は優れており、いくつかのパラメータが改善されています。特に包括的で、ユーザーに優れたエクスペリエンスをもたらします。 。 i9-12900H パラメータ評価レビュー: 1. i9-12900H は、q1 アーキテクチャと 24576kb プロセス テクノロジを採用した 14 コア プロセッサで、20 スレッドにアップグレードされています。 2. 最大 CPU 周波数は 1.80! 5.00 ghz で、主にワークロードによって異なります。 3. 価格と比較すると、非常に適しており、価格性能比が非常に優れており、通常の使用が必要な一部のパートナーに非常に適しています。 i9-12900H のパラメータ評価とパフォーマンスの実行スコア

C++ 関数パラメータの型の安全性チェック C++ 関数パラメータの型の安全性チェック Apr 19, 2024 pm 12:00 PM

C++ パラメーターの型の安全性チェックでは、コンパイル時チェック、実行時チェック、静的アサーションを通じて関数が予期される型の値のみを受け入れるようにし、予期しない動作やプログラムのクラッシュを防ぎます。 コンパイル時の型チェック: コンパイラは型の互換性をチェックします。実行時の型チェック:dynamic_cast を使用して型の互換性をチェックし、一致しない場合は例外をスローします。静的アサーション: コンパイル時に型条件をアサートします。

指定された値を引数として受け取る逆双曲線正弦関数の値を見つける C++ プログラム 指定された値を引数として受け取る逆双曲線正弦関数の値を見つける C++ プログラム Sep 17, 2023 am 10:49 AM

双曲線関数は、円の代わりに双曲線を使用して定義され、通常の三角関数と同等です。ラジアン単位で指定された角度から双曲線正弦関数の比率パラメーターを返します。しかし、その逆、つまり別の言い方をすればいいのです。双曲線正弦から角度を計算したい場合は、双曲線逆正弦演算のような逆双曲線三角関数演算が必要です。このコースでは、C++ で双曲線逆サイン (asinh) 関数を使用し、ラジアン単位の双曲線サイン値を使用して角度を計算する方法を説明します。双曲線逆正弦演算は次の式に従います -$$\mathrm{sinh^{-1}x\:=\:In(x\:+\:\sqrt{x^2\:+\:1})}ここで\:In\:is\:自然対数\:(log_e\:k)

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。 100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。 Apr 13, 2023 am 09:31 AM

大規模言語モデル (LLM) は優れたパフォーマンスを持っていますが、パラメーターの数は簡単に数千億に達する可能性があり、コンピューティング機器とメモリの需要が非常に大きいため、一般の企業にはそれを買う余裕がありません。量子化は一般的な圧縮操作であり、モデルの重みの精度を下げる (32 ビットから 8 ビットなど) ことにより、推論速度の高速化とメモリ要件の削減と引き換えにモデルのパフォーマンスの一部を犠牲にします。しかし、1,000 億を超えるパラメータを持つ LLM の場合、既存の圧縮方法ではモデルの精度を維持できず、ハードウェア上で効率的に実行することもできません。最近、MIT と NVIDIA の研究者が共同で、汎用のポストトレーニング量子化 (GPQ) を提案しました。

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

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

See all articles