先看下面两段js程序,先是定义式函数写法:
<script type="text/javascript">
function myfunc(){
alert("第一次调用");
};
myfunc(); //得出的是 第二次调用
function myfunc() {
alert("第二次调用");
};
myfunc(); //得出的是 第二次调用
</script>
接下来是变量式函数写法:
<script type="text/javascript">
var myfunc = function (){
alert("第一次调用");
};
myfunc(); //得出的是 第一次调用
myfunc = function () {
alert("第二次调用");
};
myfunc(); //得出的是 第二次调用
</script>
在定义式函数写法的代码中执行两个方法后的结果是一样的,就等于定义式函数中第一个函数没起到任何作用,得到的都是第二个函数的结果,从结果来看,JavaScript执行顺序不是按顺序一条一条来执行。
在变量式函数写法的代码中执行两个方法后的结果是不同的,从这来看,JavaScript执行顺序是按顺序一条一条来执行的,
从这两个不同函数的表示方法来看,在同一段程序的分析执行中,定义式函数有优先权,定义式函数执行完后,其他语句(包括变量式函数)才顺序执行,那么下面的例子也就不难得出结果了:
<script type="text/javascript">
function myfunc(){
alert("第一次调用");
};
myfunc(); //输出 第二次调用
var myfunc = function (){
alert("第三次调用");
}
myfunc();//输出 第三次调用 上次的结果已经被这次的变量式函数结果覆盖
function myfunc() {
alert("第二次调用");
};
myfunc();//输出 第三次调用 function myfunc()已经不再执行
myfunc = function () {
alert("第四次调用");
}
myfunc();//输出 第四次调用
</script>
也许问题就这么解答了,但是出现下面的情况呢:
<script type="text/javascript">
function myfunc(){
alert("第一次调用");//输出 第一次调用
}
myfunc();
</script>
<script type="text/javascript">
function myfunc(){
alert("第二次调用");//输出 第二次调用
}
myfunc();
</script>
结果就不像我们上次分析的那样了,这里的改变就是把两个相同的方法放在两个JavaScript片段里,这时两个方法都得出各自的结果,这里也就说明JavaScript是按一段一段来分析执行的,如下面代码:
<script type="text/javascript">
myfunc();//输出 第一次调用
var myfunc = function (){
alert("第二次调用");
}
myfunc();//输出 第二次调用
function myfunc() {
alert("第一次调用");
};
</script>
<script type="text/javascript">
myfunc();//输出 第三次调用
var myfunc = function (){
alert("第四次调用");
}
myfunc();//输出 第四次调用
function myfunc() {
alert("第三次调用");
};
myfunc();//输出 第四次调用
</script>
欢迎访问:hrrp://www.joymood.cn
<script type="text/javascript">
function myfunc(){
alert("第一次调用");
};
myfunc(); //得出的是 第二次调用
function myfunc() {
alert("第二次调用");
};
myfunc(); //得出的是 第二次调用
</script>
接下来是变量式函数写法:
<script type="text/javascript">
var myfunc = function (){
alert("第一次调用");
};
myfunc(); //得出的是 第一次调用
myfunc = function () {
alert("第二次调用");
};
myfunc(); //得出的是 第二次调用
</script>
在定义式函数写法的代码中执行两个方法后的结果是一样的,就等于定义式函数中第一个函数没起到任何作用,得到的都是第二个函数的结果,从结果来看,JavaScript执行顺序不是按顺序一条一条来执行。
在变量式函数写法的代码中执行两个方法后的结果是不同的,从这来看,JavaScript执行顺序是按顺序一条一条来执行的,
从这两个不同函数的表示方法来看,在同一段程序的分析执行中,定义式函数有优先权,定义式函数执行完后,其他语句(包括变量式函数)才顺序执行,那么下面的例子也就不难得出结果了:
<script type="text/javascript">
function myfunc(){
alert("第一次调用");
};
myfunc(); //输出 第二次调用
var myfunc = function (){
alert("第三次调用");
}
myfunc();//输出 第三次调用 上次的结果已经被这次的变量式函数结果覆盖
function myfunc() {
alert("第二次调用");
};
myfunc();//输出 第三次调用 function myfunc()已经不再执行
myfunc = function () {
alert("第四次调用");
}
myfunc();//输出 第四次调用
</script>
也许问题就这么解答了,但是出现下面的情况呢:
<script type="text/javascript">
function myfunc(){
alert("第一次调用");//输出 第一次调用
}
myfunc();
</script>
<script type="text/javascript">
function myfunc(){
alert("第二次调用");//输出 第二次调用
}
myfunc();
</script>
结果就不像我们上次分析的那样了,这里的改变就是把两个相同的方法放在两个JavaScript片段里,这时两个方法都得出各自的结果,这里也就说明JavaScript是按一段一段来分析执行的,如下面代码:
<script type="text/javascript">
myfunc();//输出 第一次调用
var myfunc = function (){
alert("第二次调用");
}
myfunc();//输出 第二次调用
function myfunc() {
alert("第一次调用");
};
</script>
<script type="text/javascript">
myfunc();//输出 第三次调用
var myfunc = function (){
alert("第四次调用");
}
myfunc();//输出 第四次调用
function myfunc() {
alert("第三次调用");
};
myfunc();//输出 第四次调用
</script>
欢迎访问:hrrp://www.joymood.cn