引数:JavaScriptの奇妙さ
キーテイクアウト
- 引数は、すべてのJavaScript関数内で利用可能なローカルな配列のようなオブジェクトであり、関数が呼び出されたときに提供されたすべての引数を含みます。プッシュやポップなどの標準配列メソッドを持っていないため、真の配列ではありません。
- その制限にもかかわらず、「引数」は強力なツールであり、さまざまな数の引数を受け入れる柔軟な関数の作成を可能にします。 引数には、「引数」オブジェクトを作成した関数への参照を含む「Callee」プロパティもあり、匿名の関数がそれ自体を参照できるようにします。これは、プリセットの引数を使用して自己参照関数と関数を作成するために使用できます。
- 引数は、すべての関数内で利用可能なローカルの配列のようなオブジェクトの名前です。それは風変わりで、しばしば無視されますが、多くのプログラミングの魔法の源です。すべての主要なJavaScriptライブラリは、引数オブジェクトの力を活用します。それはすべてのJavaScriptプログラマーが慣れてくれるべきものです
柔軟な関数を作成
それは限られているように見えるかもしれませんが、議論は非常に有用なオブジェクトです。たとえば、さまざまな数の引数を受け入れる機能を作成できます。 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]; }); };
最初の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."
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}
}javaScriptのデフォルトパラメーターを使用して「引数」オブジェクトを使用できますか?デフォルトのパラメーターを持つ関数がパラメーターよりも少ない引数で呼び出された場合、「引数」オブジェクトは、デフォルト値ではなく、実際の引数のみを含む。
「引数」オブジェクトの「Callee」プロパティは何ですか?このプロパティは非推奨であり、新しいコードでは使用しないでください。代わりに、名前付き関数式または矢印関数を使用できます。
以上が引数:JavaScriptの奇妙さの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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