JavaScript是分块执行的,先看如下的代码:
<script>
function func ()
{
document.write("<br>hello");
};
func(); //这里调用myfunc,输出yeah而不是hello
function func ()
{
document.write("<br>yeah");
};
func(); //这里调用myfunc,当然输出yeah
</script>
再对比下面的代码:
<script>
function myfunc ()
{
document.write("<br>hello");
};
myfunc(); //这里调用myfunc,输出hello
</script>
<script>
function myfunc ()
{
document.write("<br>yeah");
};
myfunc(); //这里调用myfunc,输出yeah
</script>
这说明了,JavaScript的确是一段段地执行的。一段代码中的定义式函数语句会优先执行,这似乎有点象静态语言的编译概念。所以,这一特征也被有些人称为:JavaScript的“预编译”。
function也是一种类型,函数function只是变量,那么变量就可以被随意赋值并用到任意地方:
<script>
var myfunc = function ()
{
document.write("<br>hello");
};
myfunc(); //第一次调用myfunc,输出hello
myfunc = function ()
{
document.write("<br>yeah");
};
myfunc(); //第二次调用myfunc,将输出yeah
</script>
在第一次调用函数之后,函数变量又被赋予了新的函数代码体,使得第二次调用该函数时,出现了不同的输出。