JavaScript中的“arguments”是无效的参数名吗?
我问,因为我在PhantomJS中遇到过这个问题。
答案 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的说法,“参数”在严格模式下被禁止作为参数,变量或函数的名称。