黑马程序员技术交流社区
标题:
js函数
[打印本页]
作者:
吴清华
时间:
2013-1-5 15:24
标题:
js函数
var x=1;
var y=0;
var z=0;
function add(n){n=n+1;return n}
y=add(x);
function add(n){n=n+3;return n;}
z=add(x);
alert(y+‘ ’+z);
请问这段代码的结果怎么不是2,4?而是4,4!不是顺序执行吗?
作者:
王继光
时间:
2013-1-5 16:14
你的2个函数 是一模一样的,经调试发现,把第一个函数 注释掉 其结果也是4,4, 也就是说 浏览器都是调用的第2个函数。 按照正常逻辑思考,这也是很正常的吧, 第二个函数把第一个函数给覆盖掉了。
作者:
乔培培
时间:
2013-1-8 13:46
楼上说得很对。。。
网页代码有一个执行顺序的问题,它们严格遵从由上到下的解析顺序。
在你的代码当里存在同名函数,这在java或c#中就会涉及到重载和覆盖的问题,但在js中,在严格遵从由上到下的解析过程中只要存在同名函数,无论参数是否一致,后面的函数都将覆盖前一个函数,这时你调用的或你能够调用的都只有后一个函数
作者:
林嘉健
时间:
2013-1-9 18:07
按楼上的来说 就是JS不存在 方法重载的吧?
作者:
乔培培
时间:
2013-1-10 11:48
林嘉健 发表于 2013-1-9 18:07
按楼上的来说 就是JS不存在 方法重载的吧?
没错,可以测试一下。。。
作者:
黑马刘俊
时间:
2013-1-11 23:13
既然程序是从上到下顺序执行,那当页面加载到y=add(x)的时候,不是只有第一个函数么,第二个函数还没加载进来,怎么会覆盖第一个函数呢。
我试了一下,在<head>标签下写的<script>标签内的代码,
不论两个add()函数是放在调用代码前还后,都会执行最后一个add()函数
是不是可以理解为浏览器会先加载完所有的函数,然后在执行调用代码??
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2