В js существует шесть распространенных типов данных: строковый тип, нулевой тип, числовой тип, логический тип и тип объекта.
1. Примечания по типу
Когда речь заходит о типах данных, нельзя не упомянуть оператор typeof. Обратите внимание:
1. typeof — это оператор, а не метод. Хотя мы часто используем typeof() для получения типа данных объекта.
2. Typeof для null — это объект (это потому, что null — это пустая ссылка на объект), а typeof для функции — это функция.
Скопируйте код кода следующим образом:
alert(typeof null); // возвращаем объект
демонстрационная функция(){
оповещение('демо');
}
alert(typeof demo); // возвращаем функцию
2. Установите начальные значения для объектных переменных различных типов данных.
Обратите внимание: если объектная переменная типа Object не знает, что присвоить сначала, не используйте var demo={}, лучше всего установить для нее значение null;
Скопируйте код кода следующим образом:
вар d2 = ноль;
d2={'ключ':"дерьмо"};
var d3='';//строка по умолчанию
var d4=0 //начальное значение типа номера установлено в 0;
var d5=null; //Устанавливаем начальное значение по умолчанию для типа объекта
3. Разница и моменты, на которые следует обратить внимание между undefined и null
1. Если вы используете «==" для сравнения, они равны, потому что сравнивают значения.
2. Различить их можно двумя способами (их суть в сравнении типов данных)
1) Используйте typeof, чтобы различать их
2) Используйте конгруэнтный "===": сравнение происходит между значением и типом данных, и true будет возвращено, только если они все одинаковы.
Скопируйте код кода следующим образом:
оповещение (не определено == ноль); // истина;
оповещение (typeof неопределенный == typeof null); //false;
оповещение (не определено === ноль // истина);
4. Примечания к логическим значениям
1. Сравнение между true и 1 такое же, как и сравнение между false и 0 (это сравнение "=="), поскольку преобразование типа данных реализовано внутри, преобразуя true в 1 и преобразуя false в 0. Внутри js много данных. Автоматическое преобразование типов — это то, на что должен обратить внимание каждый. Многие другие будут упомянуты позже. Но использование «===" не равно, потому что их типы данных не равны.
2. Отображение преобразования в логическое значение. Используйте метод Boolean() для отображения преобразования. Вам нужно обратить внимание на различные типы данных: когда конвертировать в true, а когда в false.
1) Тип строки: если это не пустая строка, она будет преобразована в true.
2) Тип числа: если он не равен 0, даже отрицательное число будет преобразовано в истинное.
3) Тип объекта, если он не является нулевым, будет преобразован в true.
4) Неопределенный тип будет преобразован в false.
Демонстрировать не буду, можете попробовать сами.
3. (***) Булева функция вызывается внутри () оператора if().
5. На что следует обратить внимание при выборе типа номера
1. Тип float не может выполнять точные операции.
Скопируйте код кода следующим образом:
alert(0.1+0.2);//Вернем 0.3000000000000000004
2. Поддержка операций научной записи.
3. NaN (не число)
1) var d=0/0 Примечание. В js не будет сообщено об ошибке, но будет возвращено NaN.
2) Можно получить через Number.NaN
3) Любая операция между NaN и любым объектом вернет NaN.
4) isNaN() определяет, является ли это NaN
Скопируйте код кода следующим образом:
alert(isNaN(NaN));//истина
предупреждение(isNaN(12));//ложь
alert(isNaN('123'));//false: поскольку числа строкового типа могут быть автоматически преобразованы в числа
alert(isNaN('lew'));//true
alert(isNaN(false));//(*)false: поскольку логическое значение можно преобразовать в число, true становится 1, false становится 0
5) Принцип внутреннего выполнения isNaN(): То же самое относится и к объектам. Принцип реализации: Премьер-министр вызывает метод valueOf() объекта. Если его можно преобразовать в число, он будет оценен напрямую; если его невозможно преобразовать в число, он снова вызовет метод toString(). а затем проверьте возвращаемое значение.
valueOf() внутренне вызывает метод toObject(). Внутренний принцип выполнения двух методов заключается в следующем:
Скопируйте код кода следующим образом:
вар поле={
//Переопределить метод toString() объекта box
toString: функция() {
вернуть «123»;
}
};
alert(isNaN(box));//false
alert(box);//123 Внутренне alert() также сначала вызывает valueOf() объекта, а затем вызывает метод toString().
6) Преобразование других типов данных в числовой тип.
Содержит три функции: Number(): может конвертировать все типы данных; parseInt() и parseFloat() конвертируют только строки;
Скопируйте код кода следующим образом:
предупреждение(Номер('123'));//123
предупреждение(Номер('0234'));//234
alert(Number(true));//1
alert(Number(null));//(**)0
//За исключением вышеперечисленного, все остальное возвращает NaN.
предупреждение(Число(не определено))//NaN
Внутренний принцип реализации Number(): так же, как и isNaN(), сначала вызывается valueOf(), а затем toString(). . Таким образом, можно предположить, что производительность относительно низкая. . Поэтому, пока преобразуемый объект является строкой, вызовите parseInt() или parseFloat(), поскольку им не нужно внутренне определять тип.
Обратите внимание при вызове parseInt() и parseFloat(): часть строки, начинающаяся от первого числового символа до числа до того, как первый цифровой символ преобразуется в число.
Скопируйте код кода следующим образом:
alert(parseInt('123leb'));//123
alert(parseInt('123leb345'));//123
alert(parseInt('len234'));//NaN
Когда параметр в parseInt() имеет тип float, получается только целая часть числа.
Скопируйте код кода следующим образом:
предупреждение(parseInt(56.12));//56
6. Тип строки
1) (*Важно*) Строки в ECMAScript неизменяемы: строки не изменяются после их создания.
Чтобы изменить строковую переменную, которой присвоено значение, сначала уничтожьте строку в переменной, а затем заполните переменную строкой, содержащей новое значение.
Скопируйте код кода следующим образом:
вар d='привет';
d=d+' дерьмо';//Процесс выполнения: сначала присвойте значение «привет», затем очистите строку в d, объедините строки «привет» и «дерьмо», а затем присвойте значение переменной d. (Поэтому значение строки не изменится после ее создания)
2) Метод toString() преобразует другие типы данных в тип String. Но если вы работаете с нулевым или неопределенным значением, будет сообщено об ошибке.
3) Однако метод String() также может достигать эффекта toString(), но может работать с нулевыми и неопределенными значениями.
Внутренний принцип: сначала вызовите toString(), и если его можно преобразовать в строку, результат будет возвращен напрямую. Нет, затем определите, является ли он нулевым или неопределенным, а затем верните «ноль» или «неопределенный».
Краткое описание: Если вы знаете, что переменная не может быть нулевой или неопределенной, используйте toString(), который более производительен, чем String(). Поскольку String() должен принимать внутренние решения, это снизит производительность.