JavaScript的數據類型及區別
一.JavaScript的數據類型分類
js的數據類型分爲值類型(基礎類型/原始類型)和引用數據類型兩大類。其中
- 值類型(基本類型/原始類型):字符串(String) 數字(Number) 布爾(Boolean) 對空(Null) 未定義(Undefined) Symbol(es6新增的,獨一無二)
- 引用數據類型(混合數據類型):對象(Object) 數組(Array) 函數(Function)
1.值類型
// 1.字符串 string 由單引號 或 雙引號 包含的內容
var str1="趙凡";
var str2='趙凡Plus';
console.log(str1,str2);
// 字符串的拼接 +
console.log(str1+"Pro"+str2);
// 2.數字 number 整數型 浮點型
var num1=10;
console.log(num1);
var num2=10.00;
console.log(num2);
// 科學計數法 e 10的多少次方
var num3=8888e5;
console.log(num3);
var num3=8888e-8;
console.log(num3);
// 進制
var num4=010;//0開頭的代表 八進制
console.log(num4);
var num5=0x11a;//0123456789abcdef 0x開頭表示十六進制
console.log(num5);
// 3.布爾(值) Boolean 邏輯 只包含兩個值 true false
var bool1=true;
var bool2=false;
console.log(bool1);
console.log(bool2);
if(bool2){
console.log("真")
}else{
console.log("假")
}
// 4.對空 null 清空變量
var a="沈春陽";
var b=null;
a=null;
console.log(a);//null
console.log(b);
var x=null;
// 5.未定義 undefined 聲明 未賦值
var n;
console.log(n);//undefined
2.引用數據類型
// 1.對象 object {key:value,key:value...} 鍵值對
var obj1={
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,...] 數組項可以使任意數據類型
var arr1=[0,1,2,3,4,5];
console.log(arr1);
var arr2=[0,"hello",true];
console.log(arr2);
// 數組的索引值 從0開始
console.log(arr2[0]);
console.log(arr2[1]);
// 3.函數 function 方法 功能
var func1=function(){
// 執行代碼塊
console.log("這是一個方法")
}
// 調用方法/函數
func1();
3.值類型數據與引用數據類型的區別
// 值類型:string number boolean null undefined symbol
var m = 10;
var n = m;
console.log(m);
console.log(n);
m = 20;
console.log(n); //20
console.log(m); //10
// 引用類型:object array function
var obj1 = {
name: "王選東"
}
console.log(obj1); //{name:"王選東"}
var obj2 = obj1;
console.log(obj2); //{name:"王選東"}
obj2.name = "王大炮";
console.log(obj2); //{name:"王大炮"}
console.log(obj1); //{name:"王大炮"}
根據以上代碼可以看出,變量的數據類型爲值類型時,兩個變量其中一個改變不會影響兩外一個值,而變量的數據數據類型爲引用數據類型時,兩個變量其中一個變量改變會影響另一個變量的值。
4.數據類型的判斷
// 判斷數據類型 typeof 返回數據類型
var num=0;
console.log(typeof(num));//number
var str="";
console.log(typeof str);//string
var bool=false;
console.log(typeof bool);//boolean
var x=null;
console.log(typeof x);//object null 空對象
var y;
console.log(typeof y);//undefined
var obj={name:"張三"};
console.log(typeof obj);//object
var arr=[1,2,3,4,5];
console.log(typeof arr);//object
var func=function(){};
console.log(typeof func);//function
//使用 typeof 運算符時採用引用類型存儲值會出現一個問題,無論引用的是什麼類型的對象,它都返回 "object"。
//與 typeof 方法不同的是,instanceof方法要求開發者明確地確認對象爲某特定類型。通常來講,使用 instanceof 就是判斷一個實例是否屬於某種類型。
// instanceof 操作符
console.log(arr instanceof Array);
console.log(obj instanceof Array);
// Array.isArray() 是否是一個數組
console.log(Array.isArray(arr));
console.log(Array.isArray(obj));
5.數據類型的轉換
// 數據類型的轉換
console.log(typeof String(num));//string
console.log(Number(bool));//0
console.log(Boolean(str));//false