“arguments”是JavaScript中的无效参数名吗?

时间:2016-03-23 11:55:10

标签: javascript

JavaScript中的“arguments”是无效的参数名吗?

我问,因为我在PhantomJS中遇到过这个问题。

3 个答案:

答案 0 :(得分:4)

您不能将它用作严格模式下的标识符(函数参数,变量等) ; details。在松散模式下,您可以使用它。这是为了避免与所有非箭头函数具有的arguments pseudo-array冲突。 (从技术上讲,它不是reserved word,但假装它不会出错。)

无偿的现场例子:

以宽松模式工作:

$li
// Works in loose mode
function foo(arguments) {
  snippet.log("arguments is " + arguments);
}
foo(42);

...而不是严格模式(在控制台中查找错误)

<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
"use strict";
// And not in strict mode
function foo(arguments) {
  snippet.log("arguments is " + arguments);
}
foo(42);

答案 1 :(得分:1)

它是一个特殊的对象,对应于传递给函数的参数。因此,除非您将其用于此目的,否则它可能会给您带来麻烦。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

答案 2 :(得分:-2)

这是许多保留词之一。 http://www.w3schools.com/js/js_reserved.asp

编辑:好的,T.J。,它不是,但并非完全错误。根据Javascript,The Definitive Guide中的David Flanagan的说法,“参数”在严格模式下被禁止作为参数,变量或函数的名称。