不,你不能。标准的JavaScript没有这个机会。更糟糕的是,你几乎不能在功能上做到这一点。 lol -=1;
或lol--;
只是lol = lol - 1;
的快捷方式。所以,如果你会尝试写一个函数,它不适合您,例如:
function reduce() {
for (var i = 0; i < arguments.length; i++) {
arguments[i] = arguments[i] - 1;
}
}
,然后调用它像
reduce(foo, bar, lol);
它只是将无法工作,因为你通过原始的数字(不引用)。每次更改函数内部的数字时,它都不会更改数字本身,但它会返回一个新数字。
这可以通过使用一些对象来存储所有的变量,例如:
var vars = {
foo: 12,
bar: 13,
lol: 14
};
function reduce(variables) {
for (variable in variables) {
if (variables.hasOwnProperty(variable)) {
variables[variable] -= 1;
}
}
return variables;
}
reduce(vars);
来解决但这不是3个变量的列表,这是那种你重视他们的上下文的。
如果你做的东西,在全球范围内(例如,在一个窗口而没在函数包裹的东西),你可以结合两种方式上面为一个(Window
商店内的所有变种声明的变量):
function reduce(vars) {
var varslist = vars.split(',');
for (var i = 0; i < varslist.length; i++) {
window[varslist[i]] -= 1;
}
}
reduce('foo,boo,lol');
但是,只要您将其移至某个子上下文,它将不再起作用。此外它看起来非常讨厌。我宁愿用代表变量上下文的vars
对象来选择第二个解决方案。
不是真的,没有。 –
他们不平等。 –
不,你不能。只有每个变量,如上例 –