在ColdFusion中,如果要引用
<cfargument name="x">
然后你说:
arguments.x
在JavaScript中,如果你有一个功能:
var myFunction = function(x) {
那么,有没有办法明确引用参数范围,如:
arguments[0].x
或其他什么东西,以便你确定一切。
答案 0 :(得分:3)
使用arguments变量无法实现相同的功能,因为它不包含有关参数名称的信息。为了避免这种情况,您可以从使用多个参数切换到一个复合参数对象,该对象在其成员中保存实际参数值。
<script>
function abc(params) {
var x = params.x;
var y = params["y"];
}
abc( { x: 10, y: "hello" });
</script>
但是这样你在函数签名处失去了代码的一些可读性,而且你必须在调用端提供param名称。
答案 1 :(得分:1)
您可以引用arguments
伪变量,但参数是按编号索引,而不是按名称索引。避免直接弄乱arguments
是个好主意;一个常见的习惯用法是将其转换为真正的数组:
var args = Array.slice.call(arguments, 0);
答案 2 :(得分:1)
我不敢。您可以明确使用x
或arguments[0]
,但仅此而已。除非,正如其他人指出的那样,你传递一个物体。