javascript - 无效的 JavaScript 签名仍然调用正确的 API

标签 javascript api webkit v8 sfx

为什么会这样?

<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/

相关文章:

python - 使用 python 连接到 Rest API。如何设置标题和参数?

python - jira SOAP 和 XMLRPC

html - CSS 过渡 : Strange unwanted delay in Webkit browsers (Chrome and Safari)

css - 相当于 FF 和 IE 的 -webkit-text-stroke

页面收到 AJAX 响应后 JavaScript 不再执行

javascript - Jframe 等同于 javascript

javascript - 使用 WebPack,我如何创建准备好使用 "split" bundle ,其中一个依赖于另一个?

api - 试图找到 docker-compose 远程 API

c++ - v8 的替代方案,用于将 C++ 对象暴露给 JavaScript(在 PowerPC 上)

javascript - 在 qtip2 中使用 themeroller 主题