Javascript 像bash脚本一样访问参数

Javascript 像bash脚本一样访问参数,javascript,function,unix,signature,Javascript,Function,Unix,Signature,我想访问我的例程参数,就像在bash脚本中一样,通过使用美元前缀和参数号($1=第一个参数,$2=第二个参数),我的函数签名必须为空 function foo (/* Empty */) { return $1 + $2 + $3; } foo(2, 2, 4); // => 8 我该怎么做?我尝试使用apply方法,但没有成功 foo.apply(null, { $1: 2, $2: 2, $3: 4 }); 所有javascript函数都有一个隐藏的参数 函数foo()

我想访问我的例程参数,就像在bash脚本中一样,通过使用美元前缀和参数号($1=第一个参数,$2=第二个参数),我的函数签名必须为空

function foo (/* Empty */) {
    return $1 + $2 + $3;
}

foo(2, 2, 4); // => 8
我该怎么做?我尝试使用apply方法,但没有成功

foo.apply(null, { $1: 2, $2: 2, $3: 4 });

所有javascript函数都有一个隐藏的
参数

函数foo(){
for(var i=0;i
好吧,将参数转换为类似于bash的变量并不是那么简单,需要使用对象()-或者使用全局
窗口
对象-然后参数在函数外部可见,或者使用本地对象存储参数-然后它就不是100%类似于bash了

代码-使用窗口

function a() {
  for (var i = 0; i < arguments.length; i++) {
    window['$' + (i + 1)] = arguments[i];
  }
  console.log($1); // 12
}

a(12, 34, "a");
console.log($1); // 12 - visible outside function
console.log($2); // 34
console.log($3); // "a"
函数a(){
for(var i=0;i
代码-使用对象:

function a() {
  var vars = {};
  for (var i = 0; i < arguments.length; i++) {
    vars['$' + (i + 1)] = arguments[i];
  }
  console.log(vars.$1); // 12
  return vars;
}

var b = a(12, 34, "a");
console.log(b.$1); // 12
console.log(b.$2); // 34
console.log(b.$3); // "a"
函数a(){
var vars={};
for(var i=0;i
请不要在生产代码中使用此代码:

Object.defineProperties(窗口{
“$1”:{get:function fn(){返回fn.caller.arguments[0];},
“$2”:{get:function fn(){返回fn.caller.arguments[1];},
“$3”:{get:function fn(){返回fn.caller.arguments[2];},
“$4”:{get:function fn(){返回fn.caller.arguments[3];},
“$5”:{get:function fn(){返回fn.caller.arguments[4];}
});
var a=函数(){
日志($1,$2,$3,$4,$5);
};

a(“你好”,“我不能说话”,“这个”,“实际上”,“管用!”)我想像在bash脚本中一样访问参数。未使用arguments对象。@user123123您不能。您不清楚。1美元应该是多少?传递给函数的第一个参数是?或者在运行脚本时希望它是命令行中的一个参数。假设您正在使用node.js运行它,则无法执行此操作。为$1使用参数[0],或者您可以编写一个映射函数使其成为参数['$1],但我不认为变量可以在javascript中以$开头。“我不认为变量可以在javascript中以$开头”-jQuery默认使用$variable(
var$=function(…){…}
)-我确信变量可以以$开头,这是非常。。。但这可能是唯一的解决方案。是的,这对窗口对象来说非常聪明。你不应该这样做。你可以尝试使用
块,但我会避免。
function a() {
  var vars = {};
  for (var i = 0; i < arguments.length; i++) {
    vars['$' + (i + 1)] = arguments[i];
  }
  console.log(vars.$1); // 12
  return vars;
}

var b = a(12, 34, "a");
console.log(b.$1); // 12
console.log(b.$2); // 34
console.log(b.$3); // "a"