JavaScript関数オブジェクトの作成、パラメータ、スコープインスタンスの詳細な説明
関数オブジェクト
1.1 関数の作成
JavaScript 関数を作成するためのあまり使用されていない (ほとんど誰も使用していない) 方法は、関数の「コンストラクター」で new 演算子を使用することです:
var funcName = new Function( [argname1, [... argnameN,]] body );
パラメーター リストには任意の値を含めることができますパラメータの数とその後に関数本体が続きます。例:
var add = new Function("x", "y", "return(x+y)"); print(add(2, 4));
は結果を出力します:
6
しかし、関数本体がより複雑であれば、誰がこのような使いにくい方法で関数を作成するでしょうか?これには多大な労力がかかるため、JavaScript はリテラルを通じて関数を作成するための一種の糖衣構文を提供しています:
function add(x, y){ return x + y; }
または:
var add = function(x, y){ return x + y; }
実際、このような糖衣構文により、従来の分野のプログラマーにとって誤解が生じます。 function キーワードは Function を呼び出して新しいオブジェクトを作成し、パラメーター リストと関数本体を Function のコンストラクターに正確に渡します。
一般的に言えば、グローバル スコープ (スコープについては次のセクションで詳しく説明します) でオブジェクトを宣言することは、プロパティに値を割り当てることに他なりません。たとえば、上記の例の add 関数は、実際には値を追加するだけです。グローバル オブジェクト、属性名は add、属性の値はオブジェクト、つまり function(x, y){return x+y;} であることを文法的に理解することが重要です。と同じ:
var str = "This is a string";
へ。これらはすべて、グローバル オブジェクトに新しい属性を動的に追加するだけです。
関数が他のオブジェクトと同様に、独立したオブジェクトとして JavaScript 実行システムに存在することを説明するには、次の例を見てみましょう:
function p(){ print("invoke p by ()"); } p.id = "func"; p.type = "function"; print(p); print(p.id+":"+p.type); print(p());
その通りです。p は匿名関数 (オブジェクト) を指しますが、At です。同時に、他のオブジェクトと同様に、属性を持つこともできます。実行結果は次のとおりです。
function (){ print("invoke p by ()"); } func:function invoke p by ()
1.2 関数のパラメーター
JavaScript では、関数のパラメーターは非常に興味深いものです。たとえば、任意の数の関数を渡すことができます。関数の宣言時に仮パラメータが指定されていない場合でも、次のように関数にパラメータを追加できます。
function adPrint(str, len, option){ var s = str || "default"; var l = len || s.length; var o = option || "i"; s = s.substring(0, l); switch(o){ case "u": s = s.toUpperCase(); break; case "l": s = s.toLowerCase(); break; default: break; } print(s); } adPrint("Hello, world"); adPrint("Hello, world", 5); adPrint("Hello, world", 5, "l");//lower case adPrint("Hello, world", 5, "u");//upper case
関数 adPrint は、宣言時に 3 つの仮パラメータを受け入れます: 出力する文字列、出力する長さ、および出力するかどうか大文字と小文字のマーカーに変換します。ただし、呼び出すときは、1 つのパラメーター、2 つのパラメーター、または 3 つのパラメーターを順に adPrint に渡すことができます (3 つ以上のパラメーターを渡すこともできますが、それは問題ではありません)。実行結果は次のとおりです。実際、JavaScript が関数パラメータを処理する場合、他のコンパイル言語とは異なり、インタープリタが関数に渡すのは、関数オブジェクトの生成時に初期化される引数と呼ばれる配列のような内部値です。たとえば、1 つのパラメータを adPrint に渡すと、他の 2 つのパラメータは未定義になります。このようにして、これらの未定義のパラメータを adPrint 関数内で処理し、外部に公開できます。つまり、任意のパラメータを処理できます。
この魔法の引数については別の例で説明します:
Hello, world Hello hello HELLO
関数 sum には明示的な仮パラメータがありません。では、sum 関数でこれらを参照するにはどうすればよいでしょうか?引数の疑似配列を使用する必要があります。実行結果は次のとおりです:
function sum(){ var result = 0; for(var i = 0, len = arguments.length; i < len; i++){ var current = arguments[i]; if(isNaN(current)){ throw new Error("not a number exception"); }else{ result += current; } } return result; } print(sum(10, 20, 30, 40, 50)); print(sum(4, 8, 15, 16, 23, 42));//《迷失》上那串神奇的数字 print(sum("new"));
関数スコープ
JavaScript では、スコープの概念が独自の特徴を持っています。 JavaScript は、ブロック スコープなしで関数本体内で有効です。 Java 言語では、次のように for ループ ブロックで添え字変数を定義できます。
150 108 Error: not a number exception
JavaScript では、
public void method(){ for(int i = 0; i < obj1.length; i++){ //do something here; } //此时的i为未定义 for(int i = 0; i < obj2.length; i++){ //do something else; } }
function func(){ for(var i = 0; i < array.length; i++){ //do something here. } //此时i仍然有值,及I == array.length print(i);//i == array.length; }
初心者は次のようになります。この答えを得る:
var str = "global"; function scopeTest(){ print(str); var str = "local"; print(str); } scopeTest();
そして、正しい結果は次のようになります:
global local
なぜなら、関数scopeTestの定義では、宣言されていない変数strに事前にアクセスし、その後にstr変数にアクセスするため、初期化が実行されるため、最初のprint(str) は未定義のエラーを返します。では、この時点で関数が外部 str 変数にアクセスしないのはなぜでしょうか。これは、字句解析が完了した後、スコープ チェーンを構築するときに、関数内で定義された var 変数がチェーンに組み込まれるためです。関数全体では、scopeTest はすべて表示されます (関数本体の最初の行から最後の行まで)。 str 変数自体が未定義であるため、プログラムは順番に実行され、最初の行で未定義を返します。 value を str に設定するため、行の 3 行目の print(str) は「local」を返します。
以上がJavaScript関数オブジェクトの作成、パラメータ、スコープインスタンスの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

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

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

インターネット金融の急速な発展に伴い、株式投資を選択する人がますます増えています。株式取引では、ローソク足チャートは一般的に使用されるテクニカル分析手法であり、株価の変化傾向を示し、投資家がより正確な意思決定を行うのに役立ちます。この記事では、PHP と JS の開発スキルを紹介し、株価ローソク足チャートの描画方法を読者に理解してもらい、具体的なコード例を示します。 1. 株のローソク足チャートを理解する 株のローソク足チャートの描き方を紹介する前に、まずローソク足チャートとは何かを理解する必要があります。ローソク足チャートは日本人が開発した

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

js と vue の関係: 1. Web 開発の基礎としての JS、2. フロントエンド フレームワークとしての Vue.js の台頭、3. JS と Vue の補完関係、4. JS と Vue の実用化ビュー。

C++ 関数の参照パラメーター (基本的には変数のエイリアス、参照を変更すると元の変数が変更されます) とポインター パラメーター (元の変数のメモリ アドレスを保存し、ポインターを逆参照して変数を変更します) は、変数を渡したり変更したりするときに使用方法が異なります。参照パラメーターは、コンストラクターまたは代入演算子に渡されるときのコピーのオーバーヘッドを避けるために、元の変数 (特に大きな構造体) を変更するためによく使用されます。ポインター パラメーターは、メモリの場所を柔軟に指定したり、動的データ構造を実装したり、オプションのパラメーターを表すために null ポインターを渡したりするために使用されます。

Excelを使っているとvlookup関数を使ったことがあると思います。エディターが知っている限り、Lookup_value、Table_array、col_index_num、および Range_lookup という 4 つの vlookup 関数があります。それでは、具体的な使い方をご紹介します~ vlookup関数にはいくつかのパラメータとその意味があり、vlookup関数のパラメータはLookup_value、Table_array、col_index_num、Range_lookupの合計4つです。 1.ルックアップ
