首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用param调用no param javascript函数

用param调用no param javascript函数
EN

Stack Overflow用户
提问于 2014-09-09 15:53:42
回答 3查看 44关注 0票数 1

当调用时javascript不检查函数参数。

下面这个函数"test“会触发,即使它是在没有参数的情况下被调用。

代码语言:javascript
复制
<input type="button" value="test" onclick="test()">

test = function(param){
 alert("test");   
}

小提琴:

http://jsfiddle.net/Yazpj/1912/

如果错误未被抛出或javascript引擎/解析器执行,则在查找要调用的内容时甚至不检查函数参数。这对覆盖功能有什么影响吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-09 15:56:36

不,JavaScript不检查参数。

额外的参数将被忽略。声明但未传递的参数的值为undefined。所有传递的参数(声明的或其他的)都将出现在arguments伪数组中。

因为JS不支持覆盖功能,因此没有覆盖功能的含义。

具有多个签名的方法的库(如jQuery )使用单个函数来计算传递参数的类型,然后执行所需的操作。

票数 4
EN

Stack Overflow用户

发布于 2014-09-09 15:58:05

你得自己检查一下:

代码语言:javascript
复制
var test = function (param) {
    if (typeof param === 'undefined') {
        // do something...
    }
};
票数 0
EN

Stack Overflow用户

发布于 2014-09-09 16:04:31

Javascript是一种非常灵活的语言,这只是其中的一个例子。除非您没有访问param,否则不会出现任何错误,例如param.sender

至于你的凌驾问题,这是正确的。每个Javascript函数都有一个arguments变量,它是传递的参数数组。如果您给出名称,定义函数JS的参数,只需按照顺序给您。

但是重写是另一个故事,重写是通过检查arguments元素实现的,有时只是数组的长度,有时是单个项的类型。

例如,当您在没有项的情况下调用$("#name").val()时,如果参数有值的话,它只返回值,这一次是jQuery用户的适当赋值,例如element.value = arguments[0]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25749071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档