Приведение типов в языке JScript
Обновлен: Ноябрь 2007
В языке JScript можно выполнять операции со значениями разных типов, и компилятор не будет вызывать исключений. Вместо этого компилятор JScript перед выполнением операции автоматически изменяет (приводит) один из типов данных к другому. В других языках к приведению типов применяются гораздо более строгие правила.
Подробные сведения о приведении типов
Если компилятору не удается определить, что приведение типа обязательно завершится неудачей, то приведение разрешается. Любое приведение типа, которое может завершится неудачей, вызывает предупреждение во время компиляции и может создать ошибку во время выполнения при фактическом сбое приведения. Пример.
Операция |
Результат |
---|---|
Сложение числа и строки |
Число приводится к строке. |
Сложение логического значения и строки |
Логическое значение приводится к строке. |
Сложение числа и логического значения |
Логическое значение приводится к числу. |
Рассмотрим следующий пример.
var x = 2000; // A number.
var y = "Hello"; // A string.
x = x + y; // the number is coerced into a string.
print(x); // Outputs 2000Hello.
Чтобы явно преобразовать строку в целое число, можно использовать метод parseInt. Дополнительные сведения см. в разделе Метод parseInt. Чтобы явно преобразовать строку в число, можно использовать метод parseFloat. Дополнительные сведения см. в разделе Метод parseFloat. Обратите внимание, что строки автоматически преобразуются в эквивалентные числа для целей сравнения, однако остаются строками при операциях добавления (объединения).
Поскольку JScript является также строго типизированным языком, доступен и другой механизм приведения типов. Новый механизм использует имя целевого типа как функцию, которая принимает преобразуемое выражение в качестве аргумента. Этот механизм работает для всех типов-примитивов JScript, ссылочных типов JScript и типов .NET Framework.
В следующем примере кода целое число преобразуется в логическое значение:
var i : int = 23;
var b : Boolean;
b = i;
b = Boolean(i);
Поскольку значение i не равно нулю, значение b равно true.
Новый механизм приведения также работает с многими пользовательскими типами. Однако приведение к некоторым пользовательским типам или из пользовательских типов может заканчиваться неудачей, поскольку при приведении непохожих типов язык JScript может неправильно интерпретировать намерения пользователя. Это особенно верно, если исходный тип приведения состоит из нескольких значений. Например, в следующем коде создаются два класса (типа). Первый класс содержит одну переменную i, которая является целым числом. Второй класс содержит три переменные (s, f и d), принадлежащие разным типам. В окончательном операторе языку JScript не удается определить, к какому типу второго класса необходимо привести тип первого класса.
class myClass {
var i : int = 42;
}
class yourClass {
var s : String = "Hello";
var f : float = 3.142;
var d : Date = new Date();
}
// Define a variable of each user-defined type.
var mine : myClass = new myClass();
var yours : yourClass;
// This fails because there is no obvious way to convert
// from myClass to yourClass
yours = yourClass(mine);
См. также
Основные понятия
Приведение типов посредством побитовых операторов