文件:function.js中有一个方法:
function setKeys() {
var argnum;
argnum = arguments.length;
for (i = 0; i < argnum; i++) {
document.formName.elements[("key_" + (i + 1))].value = arguments[i];
}
}在我的jsp中include该文件,并调用setKeys()方法,但是,在调用的时候是用如下方式调用的:
setKeys(arg1,arg2,arg3)。我感到迷惑的是:jsp中调用时是由参数的,而js中是没有参数的,两者是如何匹配的?
function setKeys() {
var argnum;
argnum = arguments.length;
for (i = 0; i < argnum; i++) {
document.formName.elements[("key_" + (i + 1))].value = arguments[i];
}
}在我的jsp中include该文件,并调用setKeys()方法,但是,在调用的时候是用如下方式调用的:
setKeys(arg1,arg2,arg3)。我感到迷惑的是:jsp中调用时是由参数的,而js中是没有参数的,两者是如何匹配的?
参照King6860() 的回答,我进一步作了测试:
<html>
<head></head>
<script language="JavaScript">
<!--
function a(){
alert("no parameter:" + arguments[0]);
}
function a(arg1,arg2) {
alert("have parameters:" + arguments[0]);
alert("arg1:" + arg1);
}
-->
</script>
<body>
<form>
<input type="button" name="alertStr" value="justClick" onclick="a('aaaaaaaaa')">
</form>
</body>
</html>发现在方法名称相同的时候,优先调用带形式参数的js方法,而不管参数个数是否匹配(如上,调用的是第二个有两个形式参数的方法,但是onclick时传入的却是一个参数)。