JavaScript一共有6中數據類型:
基本數據類型(5):字符串(String)、數字(Number)、布爾(Boolean)、數組(Array)、空(Null)、未定義(Undefined)
複雜數據類型(1):對象(Object)
注意:Array、Date、Math、Error Set(ES6).....都是屬於Object中數組
原始類型(基本類型):按值訪問,能夠操做保存在變量中實際的值。
原始類型彙總中null、undefined比較特殊。
引用類型:引用類型的值是保存在內存中的對象。數據結構
與其餘語言不一樣的是,JavaScript不容許直接訪問內存中的位置,也就是說不能直接操做
對象的內存空間。
在操做對象時,其實是在操做對象的引用而不是實際的對象。因此引用類型的值是按引用
訪問的。函數
因爲js中的變量是鬆散類型的,因此它提供了一種檢測當前變量的數據類型的方法,也就是typeof關鍵字。指針
關鍵字 | 值 | 類型 |
---|---|---|
typeof | 123 | Number |
typeof | 'abc' | String |
typeof | true | Boolean |
typeof | undefined | Undefined |
typeof | null | Object |
typeof | { } | Object |
typeof | [ ] | Object |
typeof | console.log() | Function |
null類型進行typeof操做符後,結果是object,緣由在於,null類型被當作一個空對象引用。code
特殊值 NaN (非數字類型)對象
通常NaN被動產生(數據類型轉爲Number,不能轉爲正常的數字,就是NaN)
函數 isNaN() 判斷是否是NaN或者能不能轉換爲NaNip
使用實例:內存
//數字 var n1 = 10234; var n2 = 0x12; //十六進制 var n3 = 2e2; //科學計數法(小學知識) console.log(n1,n2,n3) //浮點精度問題 console.log(.1 + .2); //NaN 表示Not a number console.log(NaN) console.log(typeof(NaN)) //NaN的數據類型依然是number //NaN 跟 任何值(包括0) 進行任何運算 結果依然是NaN console.log(NaN * 0); //結果是NaN //NaN跟誰都不相等 console.log(NaN == NaN) //結果是false var num = 2344e1000; console.log(typeof(num)) //結果是infinity即無窮大 console.log(num) //數據類型依然爲number console.log(isNaN(NaN)) //true console.log(isNaN('hello')) //true console.log(isNaN('123')) // false 字符串'123' 轉爲number 的時候 是 123 不是NaN
var answer="It's alright"; var answer="He is called 'Johnny'"; var answer='He is called "Johnny"';
布爾(邏輯)只能有兩個值:true 或 false。字符串
var x=true; var y=false;
1) Null類型
被動產生
null類型被看作空對象指針,前文說到null類型也是空的對象引用。string
2)Undefined類型
只有一個值,即undefined值。使用var聲明瞭變量,但未給變量初始化值,那麼這個
變量的值就是undefined.
Undefined 這個值表示變量不含有值。
能夠經過將變量的值設置爲 null 來清空變量。
cars=null; person=null;
js中對象是一組屬性與方法的集合。這裏就要說到引用類型了,引用類型是一種數據結構,
用於將數據和功能組織在一塊兒。引用類型有時候也被稱爲對象定義,由於它們描述的是一類
對象所具備的屬性和方法。
咱們看到的大多數類型值都是Object類型的實例,建立Object實例的方式有兩種:
1)第一種是使用new操做符後跟Object構造函數
var person = new Object(); person.name = "Micheal"; person.age = 24;
2)第二種方式是使用對象字面量表示法
對象由花括號分隔。在括號內部,對象的屬性以名稱和值對的形式 (name : value) 來定義。
屬性由逗號分隔
var person = { name : "Micheal", age : 24 };
尋址的兩種方式:
name=person.name; name=person["name"];
數組的每一項能夠用來保存任何類型的數據,也就是說,能夠用數組的第一個位置來
保存字符串,第二個位置保存數值,第三個位置保存對象....另外,數組的大小是可
以動態調整的。
建立數組的基本方式有兩種:
1)第一種是使用Array構造函數
var colors = new Array("red","blue","yellow"); var cars=new Array(); cars[0]="Saab"; cars[1]="Volvo"; cars[2]="BMW";
2)第二種是使用數組字面量表示法
var colors = ["red","blue","yellow"];
每一個函數都是Function類型的實例,並且都與其餘引用類型同樣具備屬性和方法。
函數一般是使用函數聲明語法定義的,以下所示
function sum(num1,num2){ return num1 + num2; };
這和使用函數表達式定義函數的方式相差無幾
var sun = function (){ return sum1 + sum2; };
注意:
當您聲明新變量時,可使用關鍵詞 "new" 來聲明其類型:
var carname=new String; var x= new Number; var y= new Boolean; var cars= new Array; var person= new Object;
JavaScript 變量均爲對象。當您聲明一個變量時,就建立了一個新的對象。 提示:JavaScript具備隱含的全局概念,意味着你不聲明的任何變量都會成爲一個全局對象屬性。