当调用时javascript不检查函数参数。
下面这个函数"test“会触发,即使它是在没有参数的情况下被调用。
<input type="button" value="test" onclick="test()">
test = function(param){
alert("test");
}小提琴:
http://jsfiddle.net/Yazpj/1912/
如果错误未被抛出或javascript引擎/解析器执行,则在查找要调用的内容时甚至不检查函数参数。这对覆盖功能有什么影响吗?
发布于 2014-09-09 15:56:36
不,JavaScript不检查参数。
额外的参数将被忽略。声明但未传递的参数的值为undefined。所有传递的参数(声明的或其他的)都将出现在arguments伪数组中。
因为JS不支持覆盖功能,因此没有覆盖功能的含义。
具有多个签名的方法的库(如jQuery )使用单个函数来计算传递参数的类型,然后执行所需的操作。
发布于 2014-09-09 15:58:05
你得自己检查一下:
var test = function (param) {
if (typeof param === 'undefined') {
// do something...
}
};发布于 2014-09-09 16:04:31
Javascript是一种非常灵活的语言,这只是其中的一个例子。除非您没有访问param,否则不会出现任何错误,例如param.sender
至于你的凌驾问题,这是正确的。每个Javascript函数都有一个arguments变量,它是传递的参数数组。如果您给出名称,定义函数JS的参数,只需按照顺序给您。
但是重写是另一个故事,重写是通过检查arguments元素实现的,有时只是数组的长度,有时是单个项的类型。
例如,当您在没有项的情况下调用$("#name").val()时,如果参数有值的话,它只返回值,这一次是jQuery用户的适当赋值,例如element.value = arguments[0]
https://stackoverflow.com/questions/25749071
复制相似问题