gpt4 book ai didi

javascript - JavaScript 中是否存在参数不足的情况?为什么?

转载 作者:搜寻专家 更新时间:2023-11-01 05:01:14 27 4
gpt4 key购买 nike

在 JavaScript 中,不向某些函数传递某些参数是有效的。它们被视为 undefined,这对许多函数的逻辑来说是必不可少的。

我读到过这个名为“参数不足”的错误。是标准的吗?它为什么存在?

function foo(a) {
// yada yada
}
try {
foo();
} catch (e) {
console.log(e.name);
}

^ 这段代码在 Firefox 和 Chrome 上没有抛出任何东西。

最佳答案

I've read about this error called "Not enough arguments".

这不是标准的语言级错误;这是一个 API 级别 错误。也就是说,JavaScript 通常不关心传递给函数的实际参数的数量是否与函数的形式参数匹配。但是,用 JavaScript 编写的特定 API 可能会关心参数的数量。

例如,Firefox 的 addEventListener 函数(Firefox 的 DOM API 的一部分)可能会抛出“参数不足”错误,因为 addEventListener 的规范被定义为期望至少两个参数。

您可以使用 arguments object 测试传递给函数的实参数量:

function foo(a, b) {
if(arguments.length < 2) {
throw TypeError("Not enough arguments; two expected");
}

if(arguments.length > 2) {
throw TypeError("Too many arguments; two expected");
}

if(arguments.length > 10) {
throw TypeError("Way too many arguments; did you even read the docs?");
}
}

如果您希望参数不匹配导致错误,您的代码必须检测参数的数量并主动抛出错误。此版本的 foo 抛出一个 TypeError 并在您的 catch block 中捕获。

但是请记住,该错误与 foo 的形式参数数量无关。我本可以将其定义为 function foo(a,b,c),但仍然通过检查 arguments 强制执行两个参数的要求。

关于javascript - JavaScript 中是否存在参数不足的情况?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18856756/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com