はじめに
JavaScript はインタープリタ言語であり、その実行はトップダウンです。ただし、「トップダウン」についての理解はブラウザごとに若干異なり、プログラムが正しく動作するにはコードの上流と下流、つまりプログラム フローが重要です。そのため、jsの実行順序を深く理解する必要があります。この目的を達成するために、最も正確な結果が得られるように、次の 8 つの実験を計画しました。
実験
< script type= "text/javascript">
//実験 1:
function t(a)
{
alert("[t(a)]a:" a); >}
関数 t(a, b)
{
alert("[t(a, b)]a:" a ", b:" b); (1) ;
//結果:
//[t(a, b)]a:1, b:unknown
//実験 2:
関数 t(a, b)
{
alert("[t(a, b)]a:" a ", b:" b);
}
関数 t(a)
{
alert( "[t(a)]a:" a);
}
t(1); //結果:
//[t(a)]a:1
//実験 3:
function t(a)
{
alert("[t(a)]a:" a);
function t( a, b )
{
alert("[t(a, b)]a:" a ", b:" b);
t(1, 2); >// 結果:
//[t(a, b)]a:1, b:2
//実験 4:
function t(a, b)
{
alert("[t(a, b)]a:" a ", b:" b);
}
関数 t(a)
{
alert("[t (a) ]a:" a);
}
t(1, 2);
//結果:
//[t(a)]a:1
// 実験 5
function t(a)
{
alert("[t(a)]a:" a);
t(1); function t( a, b)
{
alert("[t(a, b)]a:" a ", b:" b);
}
//結果:
// [t(a, b)]a:1, b:unknown
//実験 6
function t(a)
{
alert("[t(a )]a :" a);
}
t(1, 2);
関数 t(a, b)
{
alert("[t(a, b)] a:" a ", b:" b);
}
//結果:
//[t(a, b)]a:1, b:2
/ /実験 7
function t(a, b)
{
alert("[t(a, b)]a:" a ", b:" b);
t(1 );
関数 t(a)
{
alert("[t(a)]a:" a);
}
//結果:
/ /[t (a)]a:1
//実験 8
function t(a, b)
{
alert("[t(a, b)]a: " a " , b:" b);
}
t(1, 2);
function t(a)
{
alert("[t(a)]a: " a) ;
}
//結果:
//[t(a)]a:1
追記
JavaScript 関数を定義する場合、関数名は関数オブジェクトの識別子であり、パラメーターの数は関数の単なる属性です。異なる数のパラメータを持つ関数を定義してオーバーロードを実装することはできません。
関数を呼び出すと、js は関数名から対応する関数オブジェクトを検索し、関数定義時のパラメーターに従って式のパラメーター リストを順番に照合します。過剰なパラメーターは破棄され、不足したパラメーターは処理されます。未定義として、関数が実行されます。
したがって、関数を定義するとき、通常、必須パラメーターはパラメーター リストの先頭に配置され、オプションのパラメーターは必須パラメーターの後に配置されます。
注
1. 上記 8 つの実験の結果は、360 ブラウザー (バージョン/カーネル: 6.3.1.142/21.0.1180.89) および Firefox ブラウザー (バージョン: 27.0.1 ) を通じて取得されました。実行すると得られます。
2. 正しい結果を得るには、上記の 8 つの実験はそれぞれ独立して実行してください。