[剖析Javascript原理]1.原生數據類型

一.原生數據類型

 

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *