js/javascript数据类型,基础数据类型(值类型)、复杂数据类型(引用类型)

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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值