如果将3个参数传递给在JavaScript中用2个参数声明的函数,为什么不出错?

我知道问这个问题很愚蠢,但我仍然想知道,如果我们声明一个仅包含1个参数并传递多个参数的函数,为什么Javascript不抛出错误。

function checkIt(a){
return a;
}
checkIt(6,5);

我们得到的答案是6。

lost32 回答:如果将3个参数传递给在JavaScript中用2个参数声明的函数,为什么不出错?

这就是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。

本文链接:https://www.f2er.com/3168717.html

大家都在问