Использование глобальных переменных в случае sweet.js
Я пытаюсь создать макрос, который увеличивает значение приращения в выходной файл каждый раз, когда он вызывается. Пока что у меня есть это, но оно каждый раз заново инициализирует значение 0:
macro test1 {
case { _ $x
} => {
var n = n ? n+1 : 0;
letstx $n = [makeValue(n,#{here})];
return #{
$n;
}
}
}
test1 ()
test1 ()
выходы:
0;
0;
когда то, что я хочу, это:
0;
1;
Как мне определить n
быть глобальной переменной, чтобы я мог увеличивать и сохранять ее значение вне макроса?
Обновить:
Я могу заставить его работать, изменив назначение на n
к Eval, но это действительно похоже на обман
var n = eval("if (typeof n != 'undefined') n++; else n=0; n")
1 ответ
Решение
На данный момент (есть планы сделать это лучше) вы можете просто использовать глобальный объект:
macro test1 {
case { _ $x
} => {
window.n = typeof window.n !== 'undefined' ? window.n+1 : 0;
letstx $n = [makeValue(n,#{here})];
return #{
$n;
}
}
}
test1 ()
test1 ()