Руководство по actionscript. часть 1, стр. 067
Address. charAt(0);
Подобным образом результатом следующего выражения вызова является значение » @ «, поскольку в позиции 2 находится символ @:
address. charAt(2);
В теле цикла индекс получаемого символа задается динамически через итератор i, как показано в следующем примере кода:
while (i < address.length) { if (address.charat(i) == "(a") { isvalidaddress = true:
}
i++:
}
Код проверки адреса электронной почты целиком:
var address = «me@inoock. org»: var isValidAddress = false: var i = 0:
while (i < address.length) { if (address.charat(i) == "@") { isvalidaddress = true;
}
i++;
}
В качестве упражнения рассмотрим, как среда выполнения Flash будет выполнять предыдущий оператор while.
Сначала среда Flash вычисляет значение условного выражения:
i < address.length
Здесь значение переменной i равно 0, а значение выражения address. length равно 12. Число 0 меньше 12, поэтому результатом условного выражения является true, среда выполнения Flash выполняет тело цикла:
if (address. charAt(i) == «@») { isValidAddress = true:
}
i++:
В теле цикла среда Flash сначала должна определить, нужно ли выполнять код в условном операторе:
if (address. charAt(i) == «@») { isValidAddress = true:
}
Чтобы определить, нужно ли выполнять код в предыдущем условном операторе, Flash проверяет, совпадает ли результат выражения вызова address. charAt (i) со строкой «@». При выполнении тела цикла в первый раз значение переменной i равно 0, поэтому выражение вызова address. charAt (i) преобразуется в выражение address. charAt (0), которое, как мы видели раньше, возвращает символ «т» (первый символ в адресе электронной почты). Символ «т» не равен символу » @ «, поэтому среда Flash не выполняет код в условном операторе.
После этого Flash выполняет корректор цикла, увеличивая значение переменной i на 1:
i++;
После выполнения тела цикла наступает время повторить его.
При выполнении цикла во второй раз среда Flash снова проверяет значение условного выражения. На этот раз значение переменной i равно 1, а значение выражения address. length по-прежнему равно 12. Число 1 меньше 12, поэтому результатом условного выражения является значение true и Flash выполняет тело цикла во второй раз. Как и раньше, в теле цикла определяется, нужно ли выполнять код в условном операторе:
if (address. charAt(i) == «@») { isValidAddress = true;
}
Значение переменной i равно 1, поэтому выражение вызова address. charAt (i) преобразуется в выражение address. charAt (1), которое возвращает символ «е»
(второй символ в адресе электронной почты). Символ «е» вновь не равен символу » @ «, поэтому среда Flash не выполняет код в условном операторе.
После этого Flash выполняет корректор цикла, увеличивая значение переменной i до 2. И снова наступает время повторить цикл.
При выполнении цикла в третий раз Flash проверяет значение условного выражения. На этот раз значение переменной i равно 2, а значение выражения address. length по-прежнему равно 12. Число 2 меньше 12, поэтому результатом условного выражения является значение true и среда Flash выполняет тело цикла в третий раз. Как и раньше, в теле цикла определяется, нужно ли выполнять код в условном операторе: