为什么会这样?
<html>
<body id = "body">
<div id="para">hello world, invalid js API signature doesn't throw error !!!</div>
<script>
var temp = document.getSelection("parameter");
</script>
</body>
</html>
getSelection()不会根据标准签名采用任何参数。 我测试了这个,它也没有在JS控制台上抛出任何错误。
答案 0 :(得分:2)
如果使用错误数量的参数调用函数,JavaScript不会抱怨。如果传递的参数少于声明的参数,则额外参数的值为undefined
。如果还有更多,则会被忽略。这是一个功能,而不是一个错误!
在JavaScript函数中,您可以访问arguments
值,该值是一个类似于数组的结构,包含传递给它的所有参数。如果你想要你可以定义你的所有函数来获取0参数并使用arguments[0]
,arguments[1]
等代替你以前的命名参数(虽然我不明白为什么会这样做)和功能仍然可以完全相同。
拥有此arguments
结构的好处并且对您调用函数的参数数量没有限制,这使您可以执行非常强大的操作,例如此处的绑定polyfill:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
答案 1 :(得分:1)
如果我有以下JavaScript函数
function foo(first, last){
return "from Foo";
}
JavaScript将执行并将返回以下所有
foo();
foo(2);
foo("abc");
foo("abc", 3, 5);
如果要处理所有传递的参数。你可以从“论据”中得到那些。 MDN link