Если вы явно преобразуете определенный тип в другой тип с помощью вызова функции или метода, это называется явным преобразованием, а противоположное — неявным преобразованием типа. Слова «преобразование типов отображения» и «неявное преобразование типов» не встречаются в Google и Википедии. Назовем это так.
1. Неявные преобразования типов в операциях
1. Оператор «+»
Скопируйте код кода следующим образом:
вар а = 11, б = '22';
вар с = а + б;
Здесь движок сначала превратит a в строку «11», а затем соединит ее со строкой b, которая станет «1122». Некоторые люди могут задаться вопросом, почему бы не превратить b в число 22, а затем выполнить арифметическое сложение, и в этом случае c будет 33. Нет никакой причины. Когда одна из двух сторон оператора «+» имеет числовой тип, а другая — строковый тип, движок js предусматривает выполнение конкатенации строк вместо арифметического сложения. Используя функцию оператора «+», число можно легко преобразовать в строку. нравиться
Скопируйте код кода следующим образом:
вар а = 11;
предупреждение(тип a); //-->число
а = а + '';
предупреждение(тип a); //-->строка
2. Оператор «-»
«-» может быть унарным оператором (отрицательная операция) или бинарным оператором (операция вычитания). нравиться
Скопируйте код кода следующим образом:
вар а = 11, б = '5';
вар с = а - б;
предупреждение(тип c); //--> число
В отличие от «+» выше, строка b будет неявно преобразована в число 5, а затем будет выполнено арифметическое вычитание. Используя эту функцию, вы можете легко преобразовать строку в число.
Скопируйте код кода следующим образом:
вар а = '11';
а = а - '';
alert(typeof a);// -->номер
2. Неявное преобразование типов в операторах
1, если
Скопируйте код кода следующим образом:
var obj = {name:'jack'}
если (объект) {
//делаем больше
}
Здесь obj будет неявно преобразован в логический тип.
2. пока
Скопируйте код кода следующим образом:
var obj = {name:'jack'}
в то время как (объект) {
//делаем больше
}
То же, как если бы
3. Преобразование типа во время for in
Неявное преобразование идентификатора в строку происходит при определении литерала объекта.
Скопируйте код кода следующим образом:
var person = {'name':'jack',"age":20,school:'PKU'};
for(var a лично){
alert(a + ": " + typeof a);
}
Здесь к имени и возрасту добавляются одинарные/двойные кавычки соответственно, чтобы подчеркнуть, что они относятся к строковому типу, а для школы одинарные/двойные кавычки не добавляются. Мы просматриваем свойства объекта, чтобы увидеть его тип. Обнаружено, что school также неявно преобразуется в тип String.
Индекс массива на самом деле является строковым типом. Это удивительно, но это правда. нравиться
Скопируйте код кода следующим образом:
вар ари = [1,3,5,7];
for(var a in ary){
alert(a + ": " + typeof a);
}
3. Неявное преобразование типов при оповещении
Скопируйте код кода следующим образом:
String.prototype.fn = function(){return this};
вар а = 'привет';
alert(typeof a.fn()); //-->объект
предупреждение(a.fn()); //-->привет
К прототипу String добавляется метод fn, который возвращает это. Мы знаем, что это можно понимать как объект экземпляра текущего класса. Поскольку это объект, typeof a.fn() естественным образом возвращает объект.
Ключом является последнее предупреждение (a.fn()). То, что возвращает a.fn(), очевидно, является объектом, но он неявно преобразуется в строку «привет» для отображения.
То же самое происходит с числовыми типами, например
Скопируйте код кода следующим образом:
Number.prototype.fn = function(){вернуть это};
вар а = 10;
alert(typeof a.fn());//-->объект
оповещение(a.fn()); //-->10
a.fn() возвращает тип объекта, но он неявно преобразуется в число при использовании alert(a.fn()).