当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么在JavaScript中可以引用调用者中的参数?》经验,为你挑选了0个好方法。

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

我在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来电者.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有