Переменные
- Присваивание создаёт переменную.
total = 0;Ключевого слова объявления и аннотации типа нет. - Переменной должно быть что-то присвоено где-то выше её первого использования в исходном тексте, иначе скрипт не скомпилируется (неопределённая переменная). Это проверяется по положению в тексте, а не по тому, что фактически выполняется.
- Поэтому переменная, присваиваемая только внутри ветви
if, компилируется, если используется послеif. Если эта ветвь не выполнилась, переменная содержит Integer0. - У скрипта одна область видимости. Блок
{ }не создаёт новую область. Счётчик цикла остаётся доступен после цикла со своим конечным значением, а присваивание имени внутри блока меняет ту же переменную везде. - Переменные живут в течение одного выполнения скрипта. Каждый запуск начинается без переменных, и два действия, выполняющиеся одновременно, никогда не видят переменных друг друга. Чтобы сохранить значение между запусками, используйте Storage.
- Переменная может называться так же, как встроенная функция.
xиx(…)различаются по скобке, хотя повторно использовать имя встроенной функции не рекомендуется.
if (MouseGetCursorX() > 500) {
side = "right";
}
UtilityPrint(StringFormat("side = {0}", side, "")); // компилируется; выводит "side = 0", если ветвь не выполнилась
for (i = 0; i < 3; i = i + 1) { }
UtilityPrint(StringFormat("i after loop = {0}", i, "")); // 3 -- блоки не создают область видимости