js中有六大數據類型,包括五種基本數據類型number、boolean、null、undefiined、string和混合數據類型object 我們可以用typeof操作符來檢測變數的數據類型(輸出的是一個關於數據類型的字元串) 以上代碼中,null進行typeof操作符後,結果是object,是因 ...
js中有六大數據類型,包括五種基本數據類型number、boolean、null、undefiined、string和混合數據類型object
我們可以用typeof操作符來檢測變數的數據類型(輸出的是一個關於數據類型的字元串)
1 var a=1; 2 console.log(typeof a);//number 3 var b="hello"; 4 console.log(typeof b);//string 5 var c=true; 6 console.log(typeof c);//boolean 7 var d=null; 8 console.log(typeof d);//object(null是空對象引用或者說是指針) 9 var e=undefined; 10 console.log(typeof e);//undefined 11 var f=function(){ 12 document.write("hello world"); 13 }; 14 console.log(typeof f);//function 15 var g=[1,2,3]; 16 console.log(typeof g);//object
以上代碼中,null進行typeof操作符後,結果是object,是因為null被當做一個空對象引用。
1、string類型
在string類型中,單引號和雙引號的作用效果完全一;
string類型有length屬性,可以獲取字元串的長度。var str = “hello”;console.log(str.length);//5
string類型的值是不可變的,要改變一個字元串的值,首先要銷毀原來的字元串,然再用另一個包含新值的字元串填充該字元串
1 var lang="java"; 2 lang+="script"; 3 console.log(lang);//javascript
上面這段代碼。先創建一個長度為10的字元串,然後把“java”和“script”填充進去,得到“javascript”,最後銷毀“java”和“script”,這個過程發生在後臺
字元串轉換:轉型函數String()適用於任何數據類型(null、defined轉換後為null和defined),toString()方法(null和defined沒有toString()方法)
2、number類型
number類型包含整數和浮點型(浮點型數值必須包含一個小數點且小數點後至少有一位數字)
可以用一個值-0來將其轉換成一個數字
浮點數會自動轉換為整數
var a = 1.00; console.log(a);//1 var b=0.1,c=0.2; console.log(b+c);//0.30000000000000004
這裡出現出現0.1+0.2不等於0.3的原因是十進位到二進位的轉換導致的精度問題。使用了IEEE754浮點數格式”來存儲浮點類型(float 32,double 64)的任何編程語言都有這個問題。
NaN:非數字類型 特點:1、涉及到任何關於NaN的操作,都會返回NaN 2、與自身不相等
isNaN()用來確定一個值是否為NaN 若isNaN()的參數不是number類型,isNaN()首先會嘗試將該參數轉換為數值類型,然後對轉換後的結果是否為NaN進行判斷。空字元串和布爾值可以強制轉換為數值類型0或1,所以返回false
isNaN(NaN); // true isNaN(undefined); // true isNaN({}); // true isNaN(true); // false isNaN(null); // false isNaN(37); // false // strings isNaN("37"); // false: 可以被轉換成數值37 isNaN("37.37"); // false: 可以被轉換成數值37.37 isNaN("37,5"); // true isNaN('123ABC'); // true: parseInt("123ABC")的結果是 123, 但是Number("123ABC")結果是 NaN isNaN(""); // false: 空字元串被轉換成0 isNaN(" "); // false: 包含空格的字元串被轉換成0 // dates isNaN(new Date()); // false isNaN(new Date().toString()); // true isNaN("blabla") // true: "blabla"不能轉換成數值 // 轉換成數值失敗, 返回NaN
Number()轉型函數,可以用於任何數據類型;
parseInt(),將值轉換為整型,用的比較多;
parseFloat();將值轉換為浮點型。
後面兩者只能 用於字元串
3、Boolean類型
該類型只有兩個值,true和false
Boolean():將某個值轉換為Boolean類型。
如果邏輯對象無初始值或值為0、-0、false、undefined、null、""、NaN,那麼對象的值為false,否者其值都為true(即使當自變數的值為字元串“false”時);
1 console.log(Boolean(0));//false 2 console.log(Boolean(NaN));//false 3 console.log(Boolean(null));//false 4 console.log(Boolean(undefined));//false 5 console.log(Boolean("false"));//true
4、null類型
null是一個對象,但是為空,所以typeof null的時候,結果為object
null在參與數值運算的時候會自動轉換為0參與運算
如果定義的變數用來保存對象,最好將該變數初始化為null
實際上undefined值是派生自null值的,所以undefined==null
類型轉換:Boolean(null)//false
Number(null) //0
String(null) //'null'
註意:null是空對象指針,{}是空對象,[]是空數組,三者不一樣。
null不能添加自定義屬性
5、undefined類型
只有一個值即undefined,使用了var聲明變數,但未給變數初始化值,那麼這個變數的值就是undefined。
var a="hello world"; var b; console.log(typeof a);//string console.log(typeof b);//undifined
出現場景:1、已聲明未賦值的變數
2、獲取對象不存在的屬性
3、無返回值的函數的執行結果
4、函數的參數沒有傳入
類型轉換:Boolean(undefined)//false
Number(undefined) //NaN
String(undefined)//'undefined'
6、object類型
object 屬於引用數據類型
對象是帶有屬性和方法的特殊數據類型
js中的所有事物都是對象:字元串,數組,函數等。js也允許自定義對象。暫不多介紹