При выполнении +, -, *, /, ==,! = И т. Д. В JavaScript, если типы значений с обеих сторон оператора не соответствуют ожидаемому типу, JavaScript будет преобразовать значения с обеих сторон оператора в ожидаемый тип перед выполнением операций. Когда ожидаемый тип значения является строкой, JavaScript будет преобразовать значение в строку; Когда ожидаемый тип значения будет номером, JavaScript преобразует значение в число (если оно не может быть преобразовано в числовое значение, он вернет NAN). Например:
Кода -копия выглядит следующим образом:
Console.log (10 + "cats"); // 10 кошек
Console.log (10 * "cats"); // nan, "cats" будут преобразованы в NAN
Console.log (10 + "2"); // 102
Console.log (10 - "2"); // 8
Консоль.log (10/"2"); // 5
Консоль.log (10 * "2"); // 20
Console.log (10 * "2"); // 20
Console.log ("10" * "2"); // 20
Правила конвертации типа значения
Для правил преобразования значений в JavaScript, пожалуйста, обратитесь к таблице 3-2. Преобразование типа JavaScript в книге «JavaScript Определяющее руководство». Некоторые из более примечательных мест:
1. Результатом является NAN после неопределенного преобразования в число.
2. Результат 0 после преобразования нуля в число.
3. Результат 0 после преобразования пустой строки «в номер».
4. Результат «0» после преобразования-0 в строку.
5. Результат 0 после преобразования пустого массива [] в число.
6. Массив только с одним численным элементом (например, [9]) преобразуется в число, и результатом является число числовых (9).
Когда JavaScript преобразует строку в номер, есть еще два интересных правила:
1. Javascript удалит символы пробелов в начале и конце строки перед его преобразованием, поэтому строки, такие как «42», могут быть успешно преобразованы в число 42.
2. После удаления матча, в начале и конец, если строка по-прежнему содержит ненуковые символы, строка будет преобразована в NAN. Например: «3 м» будет преобразована в Нэн.
Пример:
Кода -копия выглядит следующим образом:
Console.log (10 * "3"); // 30
Console.log (10 * "3 м"); // NAN, "3 M" будет преобразован в NAN
Преобразование типа значения и сравнение
В JavaScript использование равного оператора (==) включает преобразование типа значения: если типы значений с обеих сторон оператора == противоречивы, то JS преобразует их в последовательные типы перед вынесением суждений. Будьте осторожны, чтобы два разных типа значений могли быть эквивалентными после преобразования типа, но это не означает, что результат использования оператора == для них должен быть правдой. Простой пример неопределен и неверно: результат неопределенного после преобразования неопределенного в логический тип является точно ложным, но на самом деле результатом неопределенного == false является ложным.
Явное преобразование типа
Автоматическое преобразование типа с использованием JavaScript очень удобно, но он может легко вызвать такие проблемы, как обслуживание кода. Чтобы сделать код программы более ясным и менее неоднозначности, явные конверсии типа иногда используются в программах JS:
Кода -копия выглядит следующим образом:
Номер ("3") // 3
String (false) // "false"
Boolean ([]) // True
В большинстве случаев результат явного преобразования типа согласуется с результатом конверсии автоматического типа JS; Но есть особый случай: когда нулевая или неопределенная автоматически преобразуется в объект, JS бросит ошибку TypeError; Но когда нулевая или неопределенная явно преобразуется в объект, JS вернет пустой объект:
Кода -копия выглядит следующим образом:
console.log (object (undefined)); // пустой объект
console.log (object (null)); // пустой объект
В то же время, если тип, указанный явным преобразованием, отличается от типа, указанного в результате автоматического преобразования JS, полученные результаты также различаются. Например, результат неопределенного == False, упомянутого ранее, является ложным; Если тип преобразования явно указан как логический, результат правда:
Кода -копия выглядит следующим образом:
console.log (неопределенная == false); // false
console.log (boolean (undefined) == boolean (false)); // true
Использование автоматического преобразования типа
В JS автоматическое преобразование типов значений может использоваться для достижения того же эффекта, что и явное преобразование через операторов, например:
Кода -копия выглядит следующим образом:
console.log (false + ""); // "false"
Console.log (+false); // 0
Console.log (!! 3); // true