一.原生數據類型
JS共有5種原生數據類型:
Boolean true或者false
String 字符串,在單引號或者雙引號之間(不存在字符類型)
Number 整數或者浮點數
Null 空
undefined 未定義(一個變量沒有賦值,或者 賦值為 undefined)
復制代碼
//Boolean
var flag = false;
//String
var str = 'Hello';
var str2 = "Hello,World";
//Number
var n1 = 123;
var n2 = 34.534;
//Null
var pointer = null;
//Undefined
var u = undefined; //直接賦值為undefined
var a; //隻聲明,不賦值
復制代碼
在傳統的編程語言中,原生數據類型存在棧中,而引用類型存在堆中,但是JS徹底的拋棄瞭這種概念,原生數據類型保存在一個叫做變量對象(Variable Object)的對象中,而引用類型則保存在內存中。在對象變量中的原生數據類型,每個都是“獨立的”,彼此之間沒有任何影響。
復制代碼
var apple1 = 'Red';
var apple2 = apple1;
console.log(apple1); //輸出 Red
console.log(apple2); //輸出 Red
apple1 = 'Green';
console.log(apple1); //輸出 Green
console.log(apple2); //輸出 Red
復制代碼
由以上代碼可以看到,跟傳統語言一樣,它們的賦值隻是簡單的拷貝。
變量對象(Variable Object)
apple1 Red
apple2 Red
二、類型判定
判斷原生數據類型最好的方法莫過於typeof,除瞭Null,其他都工作的挺好的
console.log(typeof 456); //number
console.log(typeof 456.32); //number
console.log(typeof 'somestring'); //string
console.log(typeof false); //boolean
console.log(typeof undefined); //undefined
console.log(typeof a); //undefined
console.log(typeof null); //object
typeof null 得到的結果為object,很顯然,null表示的是空,空指針的意思,為什麼返回object就不得而知。不過判斷是否為null可以用如下代碼:
var v = null,vv = undefined;
console.log(v === null); //true
console.log(vv === null); //false
顯然,我是用的是===而不是==,因為==在比較值錢會進行類型的轉換,而===隻是進行簡單的相等比較。
console.log(5 == '5'); //true
console.log(5 === '5'); // false
console.log(undefined == null); //true
console.log(undefined === null); //false
三.原生方法
null和undefined沒有自帶的方法,但是要記住:他們雖然有方法,但是它們不是對象(雖然看起來像對象)。
var n = 123;
console.log(n.toFixed(2)); // 123.00
console.log(n.toString()); // '123'
var flag = false;
console.log(flag.toString()); // 'false'
var str = 'Hello,World';
console.log(str.toUpperCase()); //HELLO,WORLD