目次
キーテイクアウト
プリセット引数を使用して関数を作成します
javascript引数についてよく尋ねる質問
javascriptの「引数」オブジェクトは何ですか?
「引数」オブジェクトを配列に変換するにはどうすればよいですか?
「Arguments」の「Arguments」
javaScriptのデフォルトパラメーターを使用して「引数」オブジェクトを使用できますか?デフォルトのパラメーターを持つ関数がパラメーターよりも少ない引数で呼び出された場合、「引数」オブジェクトは、デフォルト値ではなく、実際の引数のみを含む。

引数:JavaScriptの奇妙さ

Mar 08, 2025 am 12:23 AM

arguments: A JavaScript Oddity

引数:JavaScriptの奇妙さ

キーテイクアウト

  • 引数は、すべてのJavaScript関数内で利用可能なローカルな配列のようなオブジェクトであり、関数が呼び出されたときに提供されたすべての引数を含みます。プッシュやポップなどの標準配列メソッドを持っていないため、真の配列ではありません。
  • その制限にもかかわらず、「引数」は強力なツールであり、さまざまな数の引数を受け入れる柔軟な関数の作成を可能にします。
  • 引数には、「引数」オブジェクトを作成した関数への参照を含む「Callee」プロパティもあり、匿名の関数がそれ自体を参照できるようにします。これは、プリセットの引数を使用して自己参照関数と関数を作成するために使用できます。
  • 引数は、すべての関数内で利用可能なローカルの配列のようなオブジェクトの名前です。それは風変わりで、しばしば無視されますが、多くのプログラミングの魔法の源です。すべての主要なJavaScriptライブラリは、引数オブジェクトの力を活用します。それはすべてのJavaScriptプログラマーが慣れてくれるべきものです
関数内では、変数:引数を介してアクセスできます。また、呼び出されたときに関数に提供されたすべての引数の配列が含まれています。実際にはJavaScriptアレイではありません。 typeof引数は、値「オブジェクト」を返します。配列インデックスを介して個々の引数値にアクセスでき、他の配列のような長さのプロパティがありますが、プッシュやポップなどの標準配列メソッドはありません。

柔軟な関数を作成

それは限られているように見えるかもしれませんが、議論は非常に有用なオブジェクトです。たとえば、さまざまな数の引数を受け入れる機能を作成できます。 Dean EdwardsによってBase2ライブラリにある形式関数は、この柔軟性を示しています:

テンプレート文字列を提供します。この文字列では、%1〜%9を使用して値に場所ホルダーを追加し、挿入する文字列を表す最大9つの他の引数を提供します。たとえば、

function format(string) {
  var args = arguments;
  var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
  return String(string).replace(pattern, function(match, index) {
    return args[index];
  });
};
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
上記のコードは文字列を返します。

気づいたかもしれないことの1つは、形式の関数定義では、1つの引数のみを指定したことです:文字列。 JavaScriptを使用すると、関数定義に関係なく、任意の数の引数を関数に渡すことができ、引数オブジェクトはすべてにアクセスできます。

実際の配列に変換します
format("And the %1 want to know whose %2 you %3", "papers", "shirt", "wear");
ログイン後にコピー
ログイン後にコピー

引数は実際のJavaScriptアレイではありませんが、標準配列メソッドを使用して簡単に1つに変換できます。

変数ARGSには、引数オブジェクトからのすべての値を含む適切なJavaScriptアレイオブジェクトが含まれます。

プリセット引数を使用して関数を作成します

引数オブジェクトにより、あらゆる種類のJavaScriptトリックを実行できます。 MakeFunc関数の定義は次のとおりです。この関数を使用すると、関数参照とその関数の任意の数の引数を提供できます。指定した関数を呼び出す匿名関数を返し、匿名関数が呼び出されたときに提供された新しい引数と一緒にプリセット引数を提供します。

function format(string) {
  var args = arguments;
  var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
  return String(string).replace(pattern, function(match, index) {
    return args[index];
  });
};
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
MakeFuncに提供された最初の引数は、呼び出す関数への参照と見なされます(はい、この簡単な例ではエラーがチェックされません)、引数配列から削除されます。 MakeFuncは、関数オブジェクトの適用方法を使用して指定された関数を呼び出す匿名関数を返します。

最初のApplyの引数は、関数が呼び出されるスコープを指します。基本的に、これが呼び出される関数内で言及するキーワード。今のところ少し前進しているので、nullを維持します。 2番目の引数は、関数の引数オブ​​ジェクトに変換される値の配列です。 MakeFuncは、匿名関数に提供された引数の配列に元の値の配列を連結し、これを呼び出された関数に提供します。

テンプレートが常に同じである場所で出力するために必要なメッセージがあったとしましょう。フォーマット関数を呼び出すたびに常にテンプレートを引用する必要がないようにするために、makefuncユーティリティ関数を使用して、フォーマットを呼び出してテンプレート引数を自動的に入力する関数を返すことができます:

このように繰り返しmajortom関数を呼び出すことができます:

format("And the %1 want to know whose %2 you %3", "papers", "shirt", "wear");
ログイン後にコピー
ログイン後にコピー

Majortom関数を呼び出すたびに、最初の引数でフォーマット関数を呼び出します。テンプレートはすでに記入されています。

var args = Array.prototype.slice.call(arguments);
ログイン後にコピー
自己参照関数を作成

それはかなりクールだと思うかもしれませんが、待ってください、議論にはもう一つの驚きがあります。別の有用なプロパティがあります:Callee。 arguments.calleeには、引数オブジェクトを作成した関数への参照が含まれています。どうすればそのようなものを使用できますか? arguments.calleeは、匿名関数がそれ自体を参照できる便利な方法です。
function makeFunc() {
  var args = Array.prototype.slice.call(arguments);
  var func = args.shift();
  return function() {
    return func.apply(null, args.concat(Array.prototype.slice.call(arguments)));
  };
}
ログイン後にコピー

ただし、その関数の特別なバージョンを作成し、毎回2秒の遅延で3回繰り返されます。繰り返し機能を使用すると、これを行うことができます:
var majorTom = makeFunc(format, "This is Major Tom to ground control. I'm %1.");
ログイン後にコピー
majorTom("stepping through the door");
majorTom("floating in a most peculiar way");
ログイン後にコピー
"This is Major Tom to ground control. I'm stepping through the door."
"This is Major Tom to ground control. I'm floating in a most peculiar way."
ログイン後にコピー
何かを呼び出す結果は、各アラートの間に2秒の遅延を3回繰り返したアラートボックスです。
function format(string) {
  var args = arguments;
  var pattern = new RegExp("%([1-" + arguments.length + "])", "g");
  return String(string).replace(pattern, function(match, index) {
    return args[index];
  });
};
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

javascript引数についてよく尋ねる質問

javascriptの「引数」オブジェクトは何ですか?

「引数」オブジェクトは、JavaScriptのすべての非矢印関数内で利用可能なローカル変数です。これには、関数に渡されたすべての引数があるアレイのような構造が含まれています。このオブジェクトは、関数がさまざまな数の引数を処理する必要がある場合に役立ちます。 「引数」オブジェクトは実際の配列ではありませんが、必要に応じて1つに変換できることに注意することが重要です。

「引数」オブジェクトを配列に変換するにはどうすればよいですか?

アレイのように動作しますが、アレイプロトタイプから継承することはできません。ただし、array.from()メソッドまたはスプレッド演算子(…)を使用して、それを配列に変換できます。例は次のとおりです。

function convertargstoarray(){
var argsarray = array.from(arguments);
//または
var argsarray = [... arguments];
}}

「Arguments」の「Arguments」

関数checkargstype(){

for(var i = 0; i console.log(typeof arguments [i]);}

}

}

javaScriptのデフォルトパラメーターを使用して「引数」オブジェクトを使用できますか?デフォルトのパラメーターを持つ関数がパラメーターよりも少ない引数で呼び出された場合、「引数」オブジェクトは、デフォルト値ではなく、実際の引数のみを含む。

「引数」オブジェクトの「Callee」プロパティは何ですか?このプロパティは非推奨であり、新しいコードでは使用しないでください。代わりに、名前付き関数式または矢印関数を使用できます。

以上が引数:JavaScriptの奇妙さの詳細内容です。詳細については、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

javascriptの分解:それが何をするのか、なぜそれが重要なのか javascriptの分解:それが何をするのか、なぜそれが重要なのか Apr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は?
または:
Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Shiseidoの公式Webサイトのように、視差スクロールと要素のアニメーション効果を実現する方法は? または: Shiseidoの公式Webサイトのようにスクロールするページを伴うアニメーション効果をどのように実現できますか? Apr 04, 2025 pm 05:36 PM

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの進化:現在の傾向と将来の見通し JavaScriptの進化:現在の傾向と将来の見通し Apr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

JavaScriptエンジン:実装の比較 JavaScriptエンジン:実装の比較 Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

フロントエンド開発でVSCodeと同様に、パネルドラッグアンドドロップ調整機能を実装する方法は? フロントエンド開発でVSCodeと同様に、パネルドラッグアンドドロップ調整機能を実装する方法は? Apr 04, 2025 pm 02:06 PM

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...

See all articles