Я пытаюсь создать макрос, который каждый раз, когда он вызывается, увеличивает значение инкремента в результат. До сих пор у меня есть, но это повторно инициализирует значение 0 каждый раз, когда:используя глобальные переменные в случае sweet.js
macro test1 {
case { _ $x
} => {
var n = n ? n+1 : 0;
letstx $n = [makeValue(n,#{here})];
return #{
$n;
}
}
}
test1()
test1()
урожайности:
0;
0;
когда то, что я хочу это:
0;
1;
Как я должен определить n
как глобальную переменную, чтобы я мог увеличивать и сохранять ее значение вне макроса?
Update:
я могу заставить его работать, изменяя присвоение n
к Eval, но это на самом деле чувствует, как обман:
var n = eval("if (typeof n != 'undefined') n++; else n=0; n")
Что вы хотите достичь, это не то, что Sweet.js входит в MHO. На самом деле вам не нужен Sweet.js в этом случае. Это может быть достигнуто с помощью чистого JS, как указано в потоке [здесь] (http://stackoverflow.com/questions/1535631/static-variables-in-javascript). – Season
Если у вас есть доступ к глобальному объекту, например «окно», вы можете использовать это, добавив к объекту окна свойство, такое как «n». – Don
@Season Это просто упрощенная тестовая версия. Мне действительно нужно sweet.js для его макрорасширения. – Michael