不,你不能。標準的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
對象來選擇第二個解決方案。
不是真的,沒有。 –
他們不平等。 –
不,你不能。只有每個變量,如上例 –