gpt4 book ai didi

javascript - 为什么在 JavaScript 中可以引用调用者的参数?

转载 作者:搜寻专家 更新时间:2023-11-01 04:40:35 26 4
gpt4 key购买 nike

什么机制允许 JavaScript 函数通过调用函数的名称从其调用者引用参数,为什么它仍然在语言中?

我正在查找 V8 中的尾调用优化(或者更确切地说是缺少尾调用优化)并看到了这篇文章 ( https://code.google.com/p/v8/issues/detail?id=457 )

Erik Corry 的例子如下

function foo(x) {
return bar(x + 1);
}

function bar(x) {
return foo.arguments[0];
}

foo(1)

起初我认为调用一个函数可能会将其 arguments 字段设置为某种奇怪的全局副作用,但它似乎只在调用期间持续。

function foo(x) {
return bar(x+1);
}

function bar(x) {
return foo.arguments[0];
}

console.log(foo(1)); // prints '1'
console.log(foo.arguments); // prints 'null'

为什么语言中有这种行为?除了向后兼容,它还有什么用吗?

编辑:

我不是在询问使用 arguments 来引用当前函数体中参数的伪数组,例如

function variadic() {
for (var i = 0; i < arguments.length; i++) {
console.log("%s-th item is %s", i, JSON.stringify(arguments[i]));
}
}

variadic(1, 2, 3, 4, 5, []);

我问的是使用 somefunction.arguments 来引用调用者的 arguments

最佳答案

如果你想捕获错误并在你自己的代码中计算它们,这会很有用,这样你就可以在集成输出上向最终用户澄清事情(或只是调试),或者将这些错误发送到服务器,这样你就知道有你的代码有问题。所有这些 callerarguments 东西都可以帮助调试堆栈。它还可以帮助记录(同样是调试内容)、打印调用函数的名称(可能还有它的参数)。或者您可以编写一个深奥的程序,以某种方式有用地使用此信息(可能在对象函数内)。

为什么它存在的原因是这是语言的一部分(我认为为什么在这里不是一个好问题)。

关于javascript - 为什么在 JavaScript 中可以引用调用者的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34122440/

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