为什么会这样?
<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 控制台上抛出任何错误。
最佳答案
如果您使用错误数量的参数调用函数,JavaScript 不会提示。如果传递的参数少于声明的参数,则额外参数的值为 undefined
。如果有更多,它们就会被忽略。这是一个功能,而不是一个错误!
在 JavaScript 函数内,您可以访问 arguments
值,该值是一个类似数组的结构,保存传递给它的所有参数。如果您希望将所有函数定义为采用 0 个参数,并使用 arguments[0]
、arguments[1]
等来代替您之前拥有的命名参数(尽管我不明白为什么有人会这样做)并且功能仍然完全相同。
拥有这种arguments
结构的好处以及对调用函数的参数数量没有限制,可以让您做非常强大的事情,就像这里找到的bind polyfill:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
关于javascript - 无效的 JavaScript 签名仍然调用正确的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18829135/