我知道问这个问题很愚蠢,但我仍然想知道,如果我们声明一个仅包含1个参数并传递多个参数的函数,为什么Javascript不抛出错误。
function checkIt(a){
return a;
}
checkIt(6,5);
我们得到的答案是6。
我知道问这个问题很愚蠢,但我仍然想知道,如果我们声明一个仅包含1个参数并传递多个参数的函数,为什么Javascript不抛出错误。
function checkIt(a){
return a;
}
checkIt(6,5);
我们得到的答案是6。
这就是JS的实现方式-您可以使用更少或更多的参数而不会出现任何错误。
如果您输入的参数更少,那么您在未输入任何参数的地方将无法定义。
如果有更多内容,只需将其放入arguments数组即可。通常,如果您想接受其他杂项。数量的参数,您将在参数中使用(...)运算符,以使人们知道这是一个接受未知数量的参数的函数。同样,关于(...)运算符的好处是,它仅捕获未知的参数,而不是仅捕获所有内容的arguments变量。
,有趣的问题。
JavaScript是一种“宽松类型”语言。
在编程中,当您不必显式指定变量和对象的类型时,我们将这种语言称为“宽松类型”。
JavaScript是松散类型的。您不必告诉一个字符串是一个字符串,也不必要求一个函数接受一个整数作为其参数。
这为JavaScript提供了很大的灵活性。灵活性使您可以更快地移动,快速更改事物,以更快的速度迭代。
松散类型语言的功能之一是,它们可以根据需要自动初始化和类型转换变量。因此,当JS解释器读取参数并发现其中一个参数丢失时,它会自动将其初始化为undefined并继续进行进一步的编程流程。
这是一个几乎适用于所有松散类型语言的概念。
谢谢。
,一个原因是,不一定仅通过阅读就可以确定函数应该接受多少个参数。例如,如果您的checkIt
在某处选中了arguments[1]
,该怎么办? (但这不是解释程序在函数调用时扫描的内容)
function checkIt(a) {
console.log(arguments[1]);
return a;
}
checkIt(6,5);
或者,带有参数rest语法的相同内容:
function checkIt(...args) {
console.log(args[1]);
return args[0];
}
checkIt(6,5);
要查找的参数索引甚至可以是动态的:
function checkIt(argIndex,...args) {
console.log(args[argIndex]);
}
checkIt(1,5,6,7);
传递比参数列表中所述更多的参数可能是代码味道,但是就像缺少分号和不必要的分号一样,没有明确的理由抛出错误,因此它不会t。