javascript数据类型分两种:基本数据类型(值类型)、复杂数据类型(引用类型)
【目录】
一.基本数据类型(值类型)
二.复杂数据类型(引用类型)
三.值类型和引用类型的区别
四.检测数据类型的方法
一、基本数据类型(值类型)
1.字符串类型/String
【创建方法】
var str=’abc’;
2.数字类型/Number
【创建方法】
var num=123;
3.布尔类型/Boolean
【创建方法】
var bool01=true;
var bool02=false;
4.Null
【创建方法】
var nu=null;
5.Undefined
【创建方法】
var un;
加注点:null和undefined是相等的,为什么相等了,当对象值为null或undefined的时候返回的类型为false,false即为0,true为1
那么如何判断区分这两个类型呢?
null == undefined这样的去判断返回的只是值的相等 (返回true)
null === undefined这样的判断就是判断对象的值和类型都要相等(返回false)
二、复杂数据类型(引用类型)
1.对象类型/Object
【创建方法】
var obj01=new Object();
var obj02={};
function obj03(n){
var obj=new Object();
obj.name=n;
return obj;
}
var a=obj03(‘创建方法03’);
function Obj04(n){
this.name=n;
}
var b=new Obj04((‘创建方法04’);
2.数组类型/Array
【创建方法】
var arr01=[]; 创建数组的方法01
var arr02=news Array(); 创建数组的方法02
3.函数类型/Function
【创建方法】
//函数申明
function fun01(n){
return n;
}
//函数表达式
var fun02=function(n){
return n;
}
三、值类型和引用类型的区别
值类型:值不会随着变化而变化(两个双胞胎不会发生完全相同的行为)
var arr03=[1,2,3,4,5];
var arr04=arr03; //[1,2,3,4,5]
arr03[1]=9;
console.log(arr04); //[1,9,3,4,5]
引用类型区别:创建的对象会随着变化而变化(存在同一个内存中)
var a=10;
var b=a; //10
a=20;
Console.log(b); //10
四、检测数据类型的方法
typeof
typeof是一个操作符,返回的值是一个字符串
typeof检测基础数据类型的时候能返回相应的类型(null除外),也可以检测函数的类型,但是在检测对象的时候不能明确的指出对象的类型,因此返回的都将是一个object。
例:检测基础数据类型的时候
typeof ‘1’; //string
typeof 1; //number
typeof function (){}; //function
…
例:检测对象的时候
typeof {a:1,b:5} ;//object
typeof [1,1,3] ;//object
例:检测null的时候(检测null的时候返回的也是object,为什么null也会返回object呢,这是因为null在js中叫空对象指针,可以理解为是一个对象)
instanceof
instanceof是一个操作符,返回的值是一个布尔值
Instanceof是专门检测引用数据类型,而不能检测基础数据类型
var arr=[1,2,3];
arr instanceof Array;//true
var obj={};
obj instanceof Object;//true
constructor
constructor这个属性是存在于构造函数的原型上的,指向到构造函数,对象可以通过__proto__在其所属类的原型上找到这个属性
Object.prototype.toString.call();
在Object基本类定义的这个toString()方法,是用来检测数据类型的;
跟字符串、数字、布尔等原型上定义的toString()方法基本用法都是转换字符串的。
console.log(Object.prototype.toString.call(1));//[object Number] console.log(Object.prototype.toString.call(’’));//[object String] console.log(Object.prototype.toString.call(true));//[object Boolean]
console.log(Object.prototype.toString.call(null));//[object Null] console.log(Object.prototype.toString.call(undefined));//[object Undefined]
console.log(Object.prototype.toString.call([]));//[object Array] console.log(Object.prototype.toString.call({}));//[object Object] console.log(Object.prototype.toString.call(/^$/));//[object RegExp] console.log(Object.prototype.toString.call((function() {})));//[object Function]