javascriptの解析実行順序は各ブラウザで異なります。


Javascriptは説明型の言語で、その実行はトップダウンです。しかし、各ブラウザの「上から下へ」の理解は微妙に違っています。コードの上下、つまりプログラムフローは正確に実行するために重要です。だから、私たちはjsの実行順序を深く理解する必要があります。このために,次の8つの実験を設計して,最も正確な結果を得た。実験
 
<script type="text/javascript">
// :
function t(a)
{
alert("[t(a)]a:" + a);
}
function t(a, b)
{
alert("[t(a, b)]a:" + a + ", b:" + b);
}
t(1);
// :
//[t(a, b)]a:1, b:undefined

// :
function t(a, b)
{
alert("[t(a, b)]a:" + a + ", b:" + b);
}
function t(a)
{
alert("[t(a)]a:" + a);
}
t(1);
// :
//[t(a)]a:1

// :
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

// :
function t(a, b)
{
alert("[t(a, b)]a:" + a + ", b:" + b);
}
function t(a)
{
alert("[t(a)]a:" + a);
}
t(1, 2);
// :
//[t(a)]a:1

//
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:undefined

//
function t(a)
{
alert("[t(a)]a:" + a);
}
t(1, 2);
function t(a, b)
{
alert("[t(a, b)]a:" + a + ", b:" + b);
}
// :
//[t(a, b)]a:1, b:2

//
function t(a, b)
{
alert("[t(a, b)]a:" + a + ", b:" + b);
}
t(1);
function t(a)
{
alert("[t(a)]a:" + a);
}
// :
//[t(a)]a:1

//
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

</script>
の後記でjavascript関数を定義した場合、関数名は関数オブジェクトの識別であり、パラメータの数はこの関数の属性だけである。パラメータの数を定義する関数によって重荷重を達成することはできません。関数を呼び出した場合、jsは関数名を通じて対応する関数オブジェクトを見つけ、関数によって定義されたパラメータと、式パラメータリストを順番に合わせ、余分なパラメータを切り捨て、足りないパラメータをundefinedで処理し、関数コードを実行します。したがって、関数を定義するときは、通常はパラメータリストの一番前に必須パラメータを置いて、オプションパラメータは必須パラメータの後ろに置いています。注意事項1、上記8つの実験の結果は360ブラウザ(バージョン/カーネル:6.3.1.142/21.180.89)とフォックスブラウザ(バージョン:27.0.1)を介して実行された。上記の8つの実験は互いに独立しています。それぞれ単独で運行して正しい結果を得てください。