[英]Calling a no param javascript function with a param
调用时javascript是否不检查功能参数。
即使没有参数调用,下面的该函数“ test”也会触发。
<input type="button" value="test" onclick="test()">
test = function(param){
alert("test");
}
小提琴:
http://jsfiddle.net/Yazpj/1912/
如果未抛出错误,或者javascript引擎/解析器在查找要调用的内容时甚至不检查函数参数。 这对覆盖功能有什么影响吗?
否,JavaScript不会检查参数。
多余的参数将被忽略。 已声明但未传递的参数的值将为undefined
。 所有传递的参数(已声明或其他形式)将出现在arguments
伪数组中。
因为JS不支持覆盖功能,所以覆盖功能没有任何意义。
具有诸如带有多个签名的方法的jQuery之类的库,使用一个函数来确定所传递参数的类型,然后执行所需的操作。
您必须自己检查:
var test = function (param) {
if (typeof param === 'undefined') {
// do something...
}
};
Javascript是一种非常灵活的语言,这只是其中的一个示例。 除非您不访问param
,否则不会出现任何错误,例如param.sender
至于您的替代问题,这是对的。 每个Javascript函数都有一个arguments
变量,它是传递的参数的数组。 如果给名称定义函数JS的参数,只需按照顺序给它。
但是,覆盖是另一回事,通过检查arguments
元素(有时只是数组的长度,有时是单个项目的类型)来实现覆盖。
例如; 当您调用$("#name").val()
因为没有项目,如果参数这次具有jQuery用户适当的赋值,则仅返回值,例如element.value = arguments[0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.