像 bash 脚本一样访问参数
Access parameters like a bash script
我想像在 bash 脚本中一样访问我的例程参数,通过使用美元前缀和参数编号($1 = 第一个参数,$2 = 第二个参数),我的函数签名必须为空。
function foo (/* Empty */) {
return + + ;
}
foo(2, 2, 4); // => 8
我该怎么做?我尝试使用 apply 方法但没有成功。
foo.apply(null, { : 2, : 2, : 4 });
所有 javascript 函数都有一个隐藏的 arguments
参数。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
function foo() {
for(var i = 0; i < arguments.length; i++) {
this['$'+(i+1)] = arguments[i]
}
console.log(, );
}
foo(1, 'b');
嗯,将参数转换为 bash 类变量并不是那么简单,需要使用对象 (more) - 要么使用全局 window
对象 - 然后参数在函数,或使用本地对象存储参数 - 那么它不是 100% bash-like.
代码 - 使用 window
:
function a() {
for (var i = 0; i < arguments.length; i++) {
window['$' + (i + 1)] = arguments[i];
}
console.log(); // 12
}
a(12, 34, "a");
console.log(); // 12 - visible outside function
console.log(); // 34
console.log(); // "a"
代码 - 使用对象:
function a() {
var vars = {};
for (var i = 0; i < arguments.length; i++) {
vars['$' + (i + 1)] = arguments[i];
}
console.log(vars.); // 12
return vars;
}
var b = a(12, 34, "a");
console.log(b.); // 12
console.log(b.); // 34
console.log(b.); // "a"
请不要在生产代码中使用它:
Object.defineProperties(window, {
'': { get: function fn() { return fn.caller.arguments[0]; } },
'': { get: function fn() { return fn.caller.arguments[1]; } },
'': { get: function fn() { return fn.caller.arguments[2]; } },
'': { get: function fn() { return fn.caller.arguments[3]; } },
'': { get: function fn() { return fn.caller.arguments[4]; } }
});
var a = function() {
console.log(, , , , );
};
a("Hello", "I can't beleave", "this", "actually", "works!");
虽然无法与 "use strict"
一起使用。
我想像在 bash 脚本中一样访问我的例程参数,通过使用美元前缀和参数编号($1 = 第一个参数,$2 = 第二个参数),我的函数签名必须为空。
function foo (/* Empty */) {
return + + ;
}
foo(2, 2, 4); // => 8
我该怎么做?我尝试使用 apply 方法但没有成功。
foo.apply(null, { : 2, : 2, : 4 });
所有 javascript 函数都有一个隐藏的 arguments
参数。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
function foo() {
for(var i = 0; i < arguments.length; i++) {
this['$'+(i+1)] = arguments[i]
}
console.log(, );
}
foo(1, 'b');
嗯,将参数转换为 bash 类变量并不是那么简单,需要使用对象 (more) - 要么使用全局 window
对象 - 然后参数在函数,或使用本地对象存储参数 - 那么它不是 100% bash-like.
代码 - 使用 window
:
function a() {
for (var i = 0; i < arguments.length; i++) {
window['$' + (i + 1)] = arguments[i];
}
console.log(); // 12
}
a(12, 34, "a");
console.log(); // 12 - visible outside function
console.log(); // 34
console.log(); // "a"
代码 - 使用对象:
function a() {
var vars = {};
for (var i = 0; i < arguments.length; i++) {
vars['$' + (i + 1)] = arguments[i];
}
console.log(vars.); // 12
return vars;
}
var b = a(12, 34, "a");
console.log(b.); // 12
console.log(b.); // 34
console.log(b.); // "a"
请不要在生产代码中使用它:
Object.defineProperties(window, {
'': { get: function fn() { return fn.caller.arguments[0]; } },
'': { get: function fn() { return fn.caller.arguments[1]; } },
'': { get: function fn() { return fn.caller.arguments[2]; } },
'': { get: function fn() { return fn.caller.arguments[3]; } },
'': { get: function fn() { return fn.caller.arguments[4]; } }
});
var a = function() {
console.log(, , , , );
};
a("Hello", "I can't beleave", "this", "actually", "works!");
虽然无法与 "use strict"
一起使用。