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

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 までご連絡ください。
PHP 5.4版本新功能:如何使用callable类型提示参数接受可调用的函数或方法PHP 5.4版本新功能:如何使用callable类型提示参数接受可调用的函数或方法Jul 29, 2023 pm 09:19 PM

PHP5.4版本新功能:如何使用callable类型提示参数接受可调用的函数或方法引言:PHP5.4版本引入了一项非常便利的新功能-可以使用callable类型提示参数来接受可调用的函数或方法。这个新功能使得函数和方法可以直接指定相应的可调用参数,而无需进行额外的检查和转换。在本文中,我们将介绍callable类型提示的使用方法,并提供一些代码示例,

产品参数是什么意思产品参数是什么意思Jul 05, 2023 am 11:13 AM

产品参数是指产品属性的意思。比如服装参数有品牌、材质、型号、大小、风格、面料、适应人群和颜色等;食品参数有品牌、重量、材质、卫生许可证号、适应人群和颜色等;家电参数有品牌、尺寸、颜色、产地、适应电压、信号、接口和功率等。

C++程序以给定值为参数,找到双曲正弦反函数的值C++程序以给定值为参数,找到双曲正弦反函数的值Sep 17, 2023 am 10:49 AM

双曲函数是使用双曲线而不是圆定义的,与普通三角函数相当。它从提供的弧度角返回双曲正弦函数中的比率参数。但要做相反的事,或者换句话说。如果我们想根据双曲正弦值计算角度,我们需要像双曲反正弦运算一样的反双曲三角运算。本课程将演示如何使用C++中的双曲反正弦(asinh)函数,使用双曲正弦值(以弧度为单位)计算角度。双曲反正弦运算遵循以下公式-$$\mathrm{sinh^{-1}x\:=\:In(x\:+\:\sqrt{x^2\:+\:1})},其中\:In\:是\:自然对数\:(log_e\:k)

PHP Warning: in_array() expects parameter的解决方法PHP Warning: in_array() expects parameter的解决方法Jun 22, 2023 pm 11:52 PM

在开发过程中,我们可能会遇到这样一个错误提示:PHPWarning:in_array()expectsparameter。这个错误提示会在使用in_array()函数时出现,有可能是因为函数的参数传递不正确所导致的。以下我们来看看这个错误提示的解决方法。首先,需要明确in_array()函数的作用:检查一个值是否在数组中存在。该函数的原型为:in_a

机器学习超参数调优总结(PySpark ML)机器学习超参数调优总结(PySpark ML)Apr 08, 2023 pm 07:21 PM

ML中的一个重要任务是模型选择,或者使用数据为给定任务找到最佳的模型或参数。这也称为调优。可以对单个的估计器(如LogisticRegression​)进行调优,也可以对包括多种算法、特性化和其他步骤的整个pipeline​进行调优。用户可以一次调优整个Pipeline​,而不是分别调优 Pipeline 中的每个元素。ML中的一个重要任务是模型选择,或者使用数据为给定任务找到最佳的模型或参数。这也称为调优。可以对单个的Estimator​(如LogisticRegression​)进行调优,也

100亿参数的语言模型跑不动?MIT华人博士提出SmoothQuant量化,内存需求直降一半,速度提升1.56倍!100亿参数的语言模型跑不动?MIT华人博士提出SmoothQuant量化,内存需求直降一半,速度提升1.56倍!Apr 13, 2023 am 09:31 AM

大型语言模型(LLM)虽然性能强劲,但动辄几百上千亿的参数量,对计算设备还是内存的需求量之大,都不是一般公司能承受得住的。量化(Quantization)是常见的压缩操作,通过降低模型权重的精度(如32bit降为8bit),牺牲一部分模型的性能来换取更快的推理速度,更少的内存需求。但对于超过1000亿参数量的LLM来说,现有的压缩方法都无法保持模型的准确率,也无法在硬件上高效地运行。最近,麻省理工学院和英伟达的研究人员联合提出了一个通用后训练的量化(GPQ, general-purpose po

必填参数缺失什么意思必填参数缺失什么意思Sep 19, 2023 pm 03:08 PM

必填参数缺失是指在进行某项操作或者调用某个函数时,必要的参数没有被提供或者没有被正确地传递。在编程中,函数通常会需要一些输入参数来完成特定的任务,必须在调用函数时被提供,如果这些必填参数没有被提供,系统就无法理解如何执行函数,因此会报错或者无法继续执行。必填参数缺失在编程中是一个常见的错误,解决这个问题的方法是检查调用函数的代码,确保所有必填参数都被正确地提供等等。

vlookup函数的参数及其意义解释vlookup函数的参数及其意义解释Jan 09, 2024 pm 03:18 PM

我们在使用excel的时候一定有用过vlookup函数吧。那么对于这种函总共有几个,每个函数具体是怎么使用的,据小编所知vlookup函数一共有四个,分别是Lookup_value、Table_array、col_index_num、Range_lookup。那么他们的具体用法就让小编来告诉大家吧~vlookup函数有几个参数每个参数的含义vlookup函数的参数有Lookup_value、Table_array、col_index_num、Range_lookup,一共有4个。1、Lookup

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

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

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境