不同浏览器中Javascript解析执行顺序的差异
简介Javascript是一种解释性语言,它的执行是top-down.but浏览器有自上而下的理解略有差异,和代码的上游和下游也于程序正确运行的关键。所以我们了解js的执行顺序是必要的。为此,我设计了以下八个实验来获得最准确的结果。
实验
复制代码代码如下所示:
实验:
函数t(a)
{
警报();
}
函数t(a,b)
{
警报(t(a,b)}+
}
T(1);
结果:
t(a,b)} a:1,b:未定义的
二/实验:
函数t(a,b)
{
警报(t(a,b)}+
}
函数t(a)
{
警报();
}
T(1);
结果:
{(a)} a:1
三实验:
函数t(a)
{
警报();
}
函数t(a,b)
{
警报(t(a,b)}+
}
T(1, 2);
结果:
t(a,b)} a:1,b:2
四实验:
函数t(a,b)
{
警报(t(a,b)}+
}
函数t(a)
{
警报();
}
T(1, 2);
结果:
{(a)} a:1
五实验
函数t(a)
{
警报();
}
T(1);
函数t(a,b)
{
警报(t(a,b)}+
}
结果:
t(a,b)} a:1,b:未定义的
六实验
函数t(a)
{
警报();
}
T(1, 2);
函数t(a,b)
{
警报(t(a,b)}+
}
结果:
t(a,b)} a:1,b:2
七实验
函数t(a,b)
{
警报(t(a,b)}+
}
T(1);
函数t(a)
{
警报();
}
结果:
{(a)} a:1
八实验
函数t(a,b)
{
警报(t(a,b)}+
}
T(1, 2);
函数t(a)
{
警报();
}
结果:
{(a)} a:1
后记
在定义Javascript函数时,函数名是函数对象的标识,而参数的数量仅仅是函数的属性,通过定义一个具有不同参数的函数来实现重载是不可能的。
当函数调用JS时,通过函数名查找相应的函数对象,然后根据函数的参数定义,以及参数表的表达式来匹配冗余参数,根据未定义的参数不够,然后执行函数代码。
因此,当定义一个函数时,通常是前面参数列表中所需的参数,后面是所需参数后面的可选参数。
注意事项
首先,这八个实验的结果是是通过360浏览器(版本/内核:6.3.1.142 / 21.0.1180.89)和火狐浏览器(版本:27.0.1)。
两。以上八个实验是相互独立的。请分别运行以获得正确的结果。