JS数据类型(8种)
- Number(数字类型,Number 和 number 不一样)
数字类型,表示数据的整数和浮点数。某些语言中也称为“双精度值”。
var intNum = 55;十进制
var num = 012;八进制
var octalNum = 0x23;十六进制
- infinity
- NaN
let res = parseFloat("left:200px");
if(res === 200){
alert(200);
}else if(res === NaN){
alert(NaN)
}else if(typeof res === "number"){
alert("number")
}else{
alert("Invalid Number")
}
//结果:字符串number => 'number'
- String(字符串)
字符串可以有单引号、双引号表示。字符串是不可变的,一旦创建,值就不能改变
要改变某个变量保存的字符串,首先要销毁原来的字符串,然后于用另一个包含的字符串填充该变量。
- Boolean(布尔值)
使用最多的一个类型,有两个字面值,分别是true、false。true不一定等于1,false不一定等于0。
boolean类型的字面值是区分大小写的。True和False是标识符
- Null(空)
只有一个值。null是表示一个空对象指针,这也是typeof操作符检测 null 值时会返回 object 的原因。
- undefined(未定义)
只有一个值。在使用var 声明变量但未对其加初始化时,这个变量就是undefined。
- Object(对象)
ECMAjavascript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。创建object类型的实例并为其添加属性(或)方法,就可以自定义创建对象。
- data
- Array
- …
- symbol(可以创建一个独一无二的值(但并不是字符串))
Symbol 类型的对象永远不相等,即便创建的时候传入相同的值。因此,可以用解决属性名冲突的问题(适用于多少编码),做为标记。
这是 es6 新增的数据类型。
- static Symbol
- Symbol.prototype
- biglnt(是指安全存储、操作大整数)
Javascript 中的任意精度整数,可以安全存储和操作大整数。即始超出 Number 能够表示的安全整数范围。是 chrome 67中的新功能。
判断数据类型
typeof 检测数据类型的逻辑运算符 (基本数据类型)
console.log(
typeof 123, //"number"
typeof 'abc', //"string"
typeof true, //"boolean"
typeof [1, 2], //"object"
typeof {}, //"object"
typeof function () {}, //"function"
typeof undefined, //"undefined"
typeof null, //"object"
typeof new Date(), //"object"
typeof /^[a-z]$/, //"object"
typeof new Error() //"object"
);
instanceof 检测是否为类的实例
console.log(
123 instanceof Number, //false
'abc' instanceof String, //false
false instanceof Boolean, //false
[1, 2, 3] instanceof Array, //true
{} instanceof Object, //true
function () { } instanceof Function, //true
undefined instanceof Object, //false
null instanceof Object, //false
new Date() instanceof Date, //true
/^[a-zA-Z]$/ instanceof RegExp, //true
new Error() instanceof Error //true
)
constructor 检测构造函数
var num = 123;
var str = 'abcdef';
var bool = true;
var arr = [1, 2, 3, 4];
var json = {name:'wenzi', age:25};
var func = function(){ console.log('this is function'); }
var und = undefined;
var nul = null;
var date = new Date();
var reg = /^[a-zA-Z]{5,20}$/;
var error= new Error();
function Person(){
}
var tom = new Person();
// undefined和null没有constructor属性
console.log(
tom.constructor==Person,
num.constructor==Number,
str.constructor==String,
bool.constructor==Boolean,
arr.constructor==Array,
json.constructor==Object,
func.constructor==Function,
date.constructor==Date,
reg.constructor==RegExp,
error.constructor==Error
);
//所有结果均为true
Object.prototype.toString.call 检测数据类型
var toString = Object.prototype.toString;
toString.call(123); //"[object Number]"
toString.call('abcdef'); //"[object String]"
toString.call(true); //"[object Boolean]"
toString.call([1, 2, 3, 4]); //"[object Array]"
toString.call({name:'wenzi', age:25}); //"[object Object]"
toString.call(function(){ console.log('this is function'); }); //"[object Function]"
toString.call(undefined); //"[object Undefined]"
toString.call(null); //"[object Null]"
toString.call(new Date()); //"[object Date]"
toString.call(/^[a-zA-Z]{5,20}$/); //"[object RegExp]"
toString.call(new Error()); //"[object Error]"
Array.isArray( ) 检验值是否为数组
-
toString ( )
作用:其他类型转成 string 的方法
支持:number、boolean、string、object
不支持:null 、undefined
-
toLocaleString ( )
把数组转成本地字符串