Нет, вы не можете. Стандартный 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
, представляющим ваш контекст переменных.
Не совсем, нет. –
Они не равны. –
нет, вы не можете. Только каждая переменная, как в верхнем примере –