2日前のクラスパーティーは、食べたり、飲んだり、楽しんだり、ナンセンスをしたりすることを除いて、とても楽しいものでした。楽しむよりも、一人で楽しむ方が本当に良かったです。
PS:卒業したり、卒業しようとしている場合は、時間があれば集まることができます。卒業後、一緒になるには時間が少なすぎるでしょう。
今、私は何かを見て、何かを要約する時間があります。数分前にJavaScript関数パートを見たので、関数の関連部分を要約するのに時間をかけました。もちろん、その中の一部は私自身の理解です。間違った理解がある場合は、それを指摘してください。
このセクションでは、私自身の理解に基づいて、事前に機能宣言の声明についてお話しします。
注:一部の場所では、関数宣言プロモーションとも呼ばれます。翻訳は異なり、意味は同じで、それらを理解するだけです。長いライブ理解!
機能宣言の宣言について事前にチャットする前に、ほとんどの友人が慣れておした機能定義のいくつかの方法を導入する必要があります。理解しているか理解したくない場合は、喜んで転がり落ちてください。知らない、または慣れ親しんでいる場合は、ゆっくりと開始してください。
関数を定義する方法
関数を定義する主な方法は3つあります。
1。関数宣言
2。関数表現関数式式)
3.新しい関数コンストラクター
その中で、関数宣言と関数式の関数定義方法がよく使用されます。これらの2つの方法には非常に微妙な違いと接続があり、これら2つの方法の使用は混乱しやすいです。したがって、この記事は主に、これら2つの関数定義方法の関連する知識ポイントをまとめたものです。もちろん、この記事のトピックは、まだ事前に機能に関するものです。
関数宣言の典型的な形式:
function functionname(arg1、arg2、...){<! - function body->}関数式
•関数式の典型的な形式:
var変数= function(arg1、arg2、...){<! - function body->}名前(ブラケット、関数名)を含む関数式式:
var変数= function functionname(arg1、arg2、...){<! - function body->}上記のような名前の関数式は、再帰に使用できます。
var変数= function functionname(x){if(x <= 1)return 1;それ以外の場合はx*functionname(x);}を返します予定より先に声明
事前にvarステートメント
友達は事前に声明を聞いたはずです。事前のステートメントは関数宣言と関数式の重要な違いであり、これら2つの関数定義方法をさらに理解することは非常に重要であるため、ここで繰り返したいと思います。
しかし、関数宣言が事前になる前に、VAR宣言が事前にあると言う必要があります。
最初に、VARステートメントの初期の結論を与えます。
変数は、それらを宣言するスクリプトまたは関数で定義されており、変数宣言ステートメントはスクリプトまたは関数の上部に進められます。ただし、変数の初期化操作は元のVARステートメントでまだ実行され、変数の値はステートメントが宣言される前に定義されていません。
上記の結論から3つの簡単なポイントを要約することができます。
1.変数宣言は、関数の最上部に進められます。
2。宣言が進んでいるだけでなく、初期化が進んでおらず、初期化は元の初期化の場所でまだ初期化されています。
3.変数の値は、宣言の前に未定義です。
例を見てみましょう:
var handome = 'handome'; function handometougly(){alert(handome); var handome = 'ugly';アラート(ハンサム);} handometougly();正しい出力は次のとおりです。
最初に定義されていない、次に出力がugいです。
エラー出力は次のとおりです。
最初にハンサムに出力し、次に醜い出力。
これはまさに変数宣言が事前に行うものです。ハンサムなローカル変数は、関数本体全体で定義されています。関数本文のハンサム変数が抑制されます。ああ、それは同じ名前のハンサムなグローバル変数をカバーします。なぜなら、変数宣言が進んでいるからです。つまり、VARハンサムは関数の一番上に進出されます。
var handome = 'handome'; function handometougly(){var handome;アラート(ハンサム); var handome = 'ugly';アラート(ハンサム);} handometougly();したがって、アラート(ハンサム)の前に、前述のように、すでにvarハンサムな宣言があります
変数の値は、宣言の前に定義されていません
したがって、最初の出力は未定義です。
そして、上記のために:
宣言が進んでいるだけでなく、初期化が進んでおらず、初期化は元の初期化の場所でまだ初期化されています。
したがって、2番目の出力は醜いです。
事前に関数宣言
次に、VAR宣言と組み合わせて、機能宣言の宣言について事前にチャットし始めます。
友人は機能宣言の宣言に事前に精通している必要があるので、非常によく知られている例を挙げてください。
saytruth(); <! - 関数宣言 - >関数saystruth(){alert( 'myvin is handome。');} saytruth(); <! - function expression-> var saytruth = function(){alert( 'myvin is handome。');}友人たちは皆、関数宣言の関数定義方法、つまり上記の最初の関数呼び出し方が正しいこと、そしてMyvinがハンサムであるという真実が正しいことを知っています。関数呼び出しステートメントは、関数宣言後に配置できるため、出力できます。関数式の関数定義方法、つまり、上記の2番目の関数呼び出しの方法では、Myvinの正しい結果がハンサムに出力できません。
上記のマイビンと組み合わせることはハンサムです。たとえば、事前に関数宣言の結論は理解しやすいようです。関数宣言の関数定義方法を使用する場合、関数呼び出しをどこにでも配置できるわけではありません。はい、あなたは正しいです、私の友人、私はあなたに反論する方法を知りません。次に、もう少し言葉を教えてください。
私の友人が言ったことから
関数宣言に関数定義メソッドを使用する場合、関数呼び出しをどこにでも配置できるということではありませんか?
それは少しにつながる可能性があります:
関数宣言が進歩すると、関数宣言と関数本文が高度になります。
そして:
関数宣言は、過去の期間中に実行されます。つまり、ブラウザがコードを実行する準備ができたときに機能宣言が実行されます。関数宣言は予想される実行期間中に実行されるため、関数宣言は実行期間中に実行されなくなります(すでに実行している人がいます。自然に実行されなくなります)。
上はポイントです。
機能式を事前に宣言できない理由
もう1つのことについて話しましょう。なぜ機能式を事前に宣言できないのですか?
幸いなことに、私は少し知っています、さもなければ私は本当に私が答えるべきか本当にわかりませんか?
Ahem、私の理解によると、私にあなたに説明させてください:
私たちは前にVARステートメントを前述し、上記のことに注意を払ってください。
宣言が進んでいるだけでなく、初期化が進んでおらず、初期化は元の初期化の場所でまだ初期化されています。
OK、ここに関数式を置きましょう:
var変数= function(arg1、arg2、...){<! - function body->}関数式は、関数の定義を式に書き込む方法です(時間の無駄のようですが、これは関数式を事前に宣言できないことを解釈して理解するのに効果的です)。これは、関数オブジェクトを変数に割り当てることです。
var変数= 5これを見て、友人は変数に値を割り当てることであり、もう1つは変数に関数オブジェクトを割り当てることであることを理解するかもしれません。したがって、関数式の場合、可変割り当ては進歩しません。つまり、関数(arg1、arg2、...){<! - 関数本文 - >}は進歩しないため、関数の定義は実行されないため、関数式を機能宣言のように事前に宣言することはできません。
関数宣言の初期インスタンスの分析
同じ文、現実は例からです:
saytruth(); if(1){function saytruth(){alert( 'myvin is handome')}ブラウザがエラーをスローしない場合(対応するブラウザがエラーをスローしているかどうかをテストしてください。なぜテストしないのですか?怠け者と言うことができますか?)、ブラウザの出力結果はmyvinです(私はそれを認めたくありませんが、真実は、もっと読むべきですか?
なぜ?もちろん、声明は進歩しました。関数宣言が進んでいるため、コードが実行される前に関数宣言が解析されます。実行順序は次のとおりです。最初の解析関数はtruth(){alert( 'myvin is handome')}、および機能を解析するとtruth(){alert( 'myvin is ugly')}、以前の関数宣言をオーバーライドします。 SayTruth()関数を呼び出すと、つまり、コードの実行中に宣言は無視されます。忘れた場合、上記のことを見ることができます:
関数宣言は、過去の期間中に実行されます。つまり、ブラウザがコードを実行する準備ができたときに機能宣言が実行されます。関数宣言は予想される実行期間中に実行されるため、関数宣言は実行期間中に実行されなくなります(すでに実行している人がいます。自然に実行されなくなります)。
クローズコール
ここで事前に宣言された機能(改善)について話しましょう。私の理解とナンセンスが困っている人に役立つことを願っています。
もちろん、実践は真の知識を生み出します。物事の理解、認知、適用は、まだ読み、使用し、さらに要約することにあります。 「新しい声明を動かして応援しましょう」という声明や実践について語っている有名なことわざを覚えています。
上記の機能宣言と機能式の簡単な分析 - 関数宣言の声明は、私が前もって共有したすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。