JavaScript的数据类型及区别
一.JavaScript的数据类型分类
js的数据类型分为值类型(基础类型/原始类型)和引用数据类型两大类。其中
值类型(基本类型/原始类型):字符串(String) 数字(Number) 布尔(Boolean) 对空(Null) 未定义(Undefined) Symbol(es6新增的,独一无二)
引用数据类型(混合数据类型):对象(Object) 数组(Array) 函数(Function)
1.值类型
// 1.字符串 string 由单引号 或 双引号 包含的内容varstr1="赵凡"; varstr2='赵凡Plus'; console.log(str1,str2); // 字符串的拼接 +console.log(str1+"Pro"+str2); // 2.数字 number 整数型 浮点型varnum1=10; console.log(num1); varnum2=10.00; console.log(num2); // 科学计数法 e 10的多少次方varnum3=8888e5; console.log(num3); varnum3=8888e-8; console.log(num3); // 进制 varnum4=010;//0开头的代表 八进制console.log(num4); varnum5=0x11a;//0123456789abcdef 0x开头表示十六进制console.log(num5); // 3.布尔(值) Boolean 逻辑 只包含两个值 true falsevarbool1=true; varbool2=false; console.log(bool1); console.log(bool2); if(bool2){ console.log("真") }else{ console.log("假") } // 4.对空 null 清空变量vara="沈春阳"; varb=null; a=null; console.log(a);//nullconsole.log(b); varx=null; // 5.未定义 undefined 声明 未赋值varn; console.log(n);//undefined
2.引用数据类型
// 1.对象 object {key:value,key:value...} 键值对varobj1={ name:"诸葛成", sex:"不详", age:22, hobby:function(){ console.log("干啥啥不行") } } console.log(obj1); console.log("姓名:"+obj1.name); console.log("性别:"+obj1.sex); obj1.hobby(); // 2.数组 array [数组项1,数组项2,...] 数组项可以使任意数据类型vararr1=[0,1,2,3,4,5]; console.log(arr1); vararr2=[0,"hello",true]; console.log(arr2); // 数组的索引值 从0开始console.log(arr2[0]); console.log(arr2[1]); // 3.函数 function 方法 功能varfunc1=function(){ // 执行代码块console.log("这是一个方法") } // 调用方法/函数func1();
3.值类型数据与引用数据类型的区别
// 值类型:string number boolean null undefined symbolvarm=10; varn=m; console.log(m); console.log(n); m=20; console.log(n); //10console.log(m); //20// 引用类型:object array functionvarobj1= { name: "王选东" } console.log(obj1); //{name:"王选东"}varobj2=obj1; console.log(obj2); //{name:"王选东"}obj2.name="王大炮"; console.log(obj2); //{name:"王大炮"}console.log(obj1); //{name:"王大炮"}
根据以上代码可以看出,变量的数据类型为值类型时,两个变量其中一个改变不会影响两外一个值,而变量的数据数据类型为引用数据类型时,两个变量其中一个变量改变会影响另一个变量的值。
4.数据类型的判断
// 判断数据类型 typeof 返回数据类型varnum=0; console.log(typeof(num));//numbervarstr=""; console.log(typeofstr);//stringvarbool=false; console.log(typeofbool);//booleanvarx=null; console.log(typeofx);//object null 空对象vary; console.log(typeofy);//undefinedvarobj={name:"张三"}; console.log(typeofobj);//objectvararr=[1,2,3,4,5]; console.log(typeofarr);//objectvarfunc=function(){}; console.log(typeoffunc);//function//使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 "object"。//与 typeof 方法不同的是,instanceof方法要求开发者明确地确认对象为某特定类型。通常来讲,使用 instanceof 就是判断一个实例是否属于某种类型。// instanceof 操作符console.log(arrinstanceofArray); console.log(objinstanceofArray); // Array.isArray() 是否是一个数组console.log(Array.isArray(arr)); console.log(Array.isArray(obj));
5.数据类型的转换
// 数据类型的转换console.log(typeofString(num));//stringconsole.log(Number(bool));//0console.log(Boolean(str));//false
讲解视频链接:
1.https://www.bilibili.com/video/BV1Lf4y1U7Cr/
2.https://www.bilibili.com/video/BV1UC4y1H7xC/
3.https://www.bilibili.com/video/BV1zK411W7M4/