关于javascript里面形式参数与实际参数不同名的问题

最近做网页,遇到一些感觉很奇怪的问题:1,比如我一个函数开始hanshu(a,b),刚开始比较简单,作为某个button的onclick响应一切OK的,然后我在函数里面添... 最近做网页,遇到一些感觉很奇怪的问题:
1,比如我一个函数开始hanshu(a,b),刚开始比较简单,作为某个button的onclick响应一切OK的,然后我在函数里面添加了几行语句【很简单的语句,而且确定这部分添加的语句能正常执行】结果就处于问题了,各种找不到原因,然后无意中想到把函数名字改了,比如改成func1(a,b)【仅仅改了调用和定义时候的名字、、、】然后就可以了。
2,还有次,我一个函数,定义的时候2个形参,func1(a,b)然后我调用的时候,我传的参数是func1(c,d)这样子一般应该没问题,我很多函数都这么用,但是有些就会报错,说a,b【即定义的形参】未定义undefined。。。然后我吧调用的时候传递的参数改成a,b或者把定义的时候的形、参改成c,d就会OK【就是形、参与实、参同名】
3,还有就是,比如我一个onclick的响应,我开始写onclick="setInterval('func1(a,b)',5000)"一切OK,然后我写成onclick="func2(a,b)",然后再func2(a,b)定义成setInterval("func1(a,b)",5000);【就只有这一句】结果就报错了。。。。但是也不是每次都报错,有时候可以运行,有时候报错,而且一旦我在func2(a,b)里面多些点语句,基本都要报错。各种不理解。。。【这里func1(a,b)涉及到连接数据看和读取XML文件,这个func1单独运行一般都没任何错误,是因为连续读取数据会导致某些问题吗?】
以上报错我见到最多的就是某个参数undefined
然后我看到一篇文章http://tozhangziwei.blog.163.com/blog/static/93467568201127111313642/
大致讲到一些javascript里面函数运作的一些过程,虽然文中例子是直接传值的方式,我就在想,会不会因为形、参与实、参不同名,导致在调用函数的时候,定义的形、参会成为undefined??还是有其他原因?

求达人分析为题所在,并求讲解当形 、参、实、参不一致的时候,函数的调用过程。
菜鸟问题可能比较雷,求指点 感激不尽!!!!
展开
 我来答
miniappcy3tv95eaedrf
2011-05-11 · TA获得超过2363个赞
知道大有可为答主
回答量:1909
采纳率:92%
帮助的人:1087万
展开全部
首先,你讲的第一条和第二条是绝对不会的.可能是代码别处有问题你没发现.
函数定义时参数对应的是函数作用域内.
调用的时候参数名是对应的调用域.
所以,定义的时候函数内要引用定义处的参数名.
调用的时候,传的参数的变量名要对应调用域的变量
没代码不能实际分析,以后你会明白的.
参数undefined不一定是没有传,也可能是传之前没有定义.
3.标签内联的事件响应不必传参(一般只传this和event)。传其它参数是没有意义的.能传到的都是全局变量,全局变量直接在函数内都可以引用.
onclick="func2(a,b)",然后再func2(a,b)定义成setInterval("func1(a,b)",5000);
你这里func2传的参数a.b完全是没有意义的.setInterval调用的时候a和b是直接从全局环境里取的.
如果全局没有定义a,b就会报错.如果想从setInterval语句所在环境里提取变量,可以这样写
function b(a,b){
setInterval(function(){alert(a,b)},5000)
}
这里给setInterval传了个匿名函数,其实是和传函数道理是一样的.
function b(a,b){
setInterval(cf,5000) //注意,只传一个函数名,不加引号
function cf(){ //这里定义函数不用传参
alert(a,b) //这里a,b引用到上级函数作用域
}
}
xml异步读取文件要在服务器运行环境下测试。出于安全考虑,一般浏览器都对跨域访问有种种限制.

你要懂你写的脚本为什么出错,就要学会一句一句分析。这个参数哪里来的,为什么会传到这里?为什么换种写法就错了,两种写法实质的差别在哪里?
追问
受教了= =谢谢  我的确是新手啊  之前都没认真做过这方面的练习orz
关于你提到的第2条那些,我这里传递的是select的value,是不是不用传递呢?我是看到有些代码里面要写的。另外,我在body里面写的map=myfunc()这里map算全局吗?可以被写在head里面的函数定义直接用?。。
抱歉啊 我是菜鸟 因为之前学的不系统,东西都是拿来的所以很多似懂非懂。
匿名用户
2011-05-11
展开全部
典型的缺乏实战,别人讲十遍,不如自己练一遍
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丹丹Dania
2011-05-11
知道答主
回答量:5
采纳率:0%
帮助的人:3.3万
展开全部
学到了很多。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式