无效的JavaScript签名仍然调用正确的API
为什么这样做?无效的JavaScript签名仍然调用正确的API,javascript,api,webkit,v8,sfx,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> 你
<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>
你好,世界,无效的JSAPI签名不会抛出错误!!!
var temp=document.getSelection(“参数”);
根据标准签名,getSelection()不接受任何参数。
我已经对此进行了测试,它也不会在JS控制台上抛出任何错误。如果调用参数数量错误的函数,JavaScript不会抱怨。如果传递的参数少于声明的参数,则额外参数的值为
undefined
。如果还有更多,它们就会被忽略。这是一个功能,而不是一个错误
在JavaScript函数中,您可以访问arguments
值,该值是一个类似数组的结构,包含传递给它的所有参数。如果需要,可以将所有函数定义为采用0个参数,并使用参数[0]
、参数[1]
等,而不是以前使用的命名参数(尽管我不明白为什么会这样做),并且函数仍然可以完全一样工作
拥有这种
参数
结构的好处,以及对调用函数的参数数量没有限制,使您能够执行非常强大的操作,比如这里的bind polyfill:如果调用参数数量错误,JavaScript不会抱怨。如果传递的参数少于声明的参数,则额外参数的值为undefined
。如果还有更多,它们就会被忽略。这是一个功能,而不是一个错误
在JavaScript函数中,您可以访问arguments
值,该值是一个类似数组的结构,包含传递给它的所有参数。如果需要,可以将所有函数定义为采用0个参数,并使用参数[0]
、参数[1]
等,而不是以前使用的命名参数(尽管我不明白为什么会这样做),并且函数仍然可以完全一样工作
拥有这个
参数
结构的好处以及对调用一个函数的参数数量没有限制,允许您执行非常强大的操作,比如这里的bind polyfill:如果我有以下JavaScript函数
function foo(first, last){
return "from Foo";
}
JavaScript将执行并返回以下所有操作
foo();
foo(2);
foo("abc");
foo("abc", 3, 5);
如果要处理所有传递的参数。你可以从“论点”中得到这些。
如果我有以下JavaScript函数
function foo(first, last){
return "from Foo";
}
JavaScript将执行并返回以下所有操作
foo();
foo(2);
foo("abc");
foo("abc", 3, 5);
如果要处理所有传递的参数。你可以从“论点”中得到这些。
我刚刚测试了一个自制的功能。。。看起来javascript不会在传递的参数上抛出错误,因为该参数在函数签名中不需要或不定义。。。看起来javascript不会在传递的参数上抛出错误,因为该参数在函数签名中不需要或不定义。