Типы данных в javascript должен знать каждый frontend-программист. Вся сложность в том, что нужно очень точно себе представлять в каком формате приходят данные. Очень часто даже опытные программисты не знаю в каком формате пришли данные из базы. Существуют способы проверить типы данных. В яваскрипте есть много неприятных сюрпризов связанных с типом данных. Допустим переменная имеет тип данных NaN или udefined. Тут нужно поэтапно проверять данные. Если функция принимает данные только в одном формате, то вы должны проверять входные параметры. В этом случае без проверки на определённый тип данных она может в некоторых случаях дать сбой. Если функция принимает массив в качестве входного параметра и вы посылаете во входной параметр строку, то будет ошибка. Вы можете долго искать ошибку. Нужно перед вызовом функции проверять переменные, предназначенные для передачи в функцию. Бывают случаи в которых данные приходят строго определённого типа и особые проверки не нужны. Теперь опишу каждый тип данных.
Число. В консоле браузера этот тип данных отображается как "number". Этот тип используется как для целых так и для дробных чисел. Тут нет как в PHP типа данных float. Для проверки на дробное число нужно делать специальную проверку.
var n = 123;
type n;
n = 12.345;
type n;
Строка. Этот тип данных чаще всего встречается. В консоле выглядит как "string". Тут можно использовать двойные кавычки и одинарные.
var str = "Это строка";
typeof str;
Булевый (логический) тип. В консоле он отображается как «boolean».
var story = true;
story = false;
typeof story;
Null. Отдельный тип данных. В консоле он отображается как «null». Имеет только одно значение null. Обратите внимание на нижний пример. Тут не будет null, а будет string.
var f = ''
typeof f;
Объект. В консоле он отображается как «object». Подробно об объектах написано на странице объекты в javascript. Для того чтобы вывести его нужно использовать console.log(). Для того чтобы просмотреть его содержимое нужно использовать console.log(). В себе может размещать как строки так и массивы. Также в нем можно разместить и другие типы данных. Прежде чем передать объект отфильтруйте его. Он не должен содержать в себе NaN и undefined. В яваскрипте нет типа данных массив. У любого массива типом данных будет объект. Если в массив поместите объект или в объект массив, то в этих случаях типом данных будет объект.
var obj = {'a': 1, 'b': 2};
typeof obj;
// в обоих случаях типом данных является объект
var a;
a = {'a': [1,2,3]}
a = [{'e': 1}]
typeof a
Теперь о неприятных сюрпризах.
//(ошибка вычислений)
var r = NaN;
typeof r
//значение не присвоено
r = undefined;
typeof r;
//бесконечность Infinity
alert( 1 / 0 );
Как проверить тип данных? Нам поможет typeof. Если вы работаете в консоле, то не используйте console.log(typeof str). Пишите сразу typeof str.
Предлагаю вам функцию для поиска float-значения в строке. Но тут есть небольшая тонкость! Значение должно встречаться в строке один раз. Регулярное выражение ищет значение согласно условию.
var a = "текст 0.2 текст";
function getFloat(str){
return +str.replace(/\.(?=.*\.)|[^\d\.-]/g, '');
}
getFloat(a);
// вывод: 0.2
Искал функцию для определения типа флоат. В результате ничего не нашел. Предлагаю вам свою самопальную функцию для определения типа float.
function getTypeFloat(num){
num = String(num);
if(num.indexOf('.') != -1){
return true;
}else{
return false;
}
}
var num = 0.5;
console.log(getTypeFloat(num));
// вывод: true