JavaScript之資料型別和變數
資料型別
Number
JavaScript不區分整數和浮點數,都用Number表示,NaN表示不是數字,infinity表示無限大
四則運算中的取餘用%
布林值
和Python的差不多
&&
運算是與運算,只有所有都為true
,&&
運算結果才是true
:
true && true; // true
true && false; // false
false && true && false; // false
||
運算是或運算,只要其中有一個為true
,||
運算結果就是true
:
false || false; // false
true || false; // true
false || true || false; // true
!
運算是非運算,它是一個單目運算子,把true
變成false
,false
變成true
:
! true; // false
! false; // true
! (2 > 5); // true
JavaScript允許對任意資料型別做比較:
false == 0; // true
false === 0; // false
要特別注意相等運算子==
。JavaScript在設計時,有兩種比較運算子:
第一種是==
比較,它會自動轉換資料型別再比較,很多時候,會得到非常詭異的結果;
第二種是===
比較,它不會自動轉換資料型別,如果資料型別不一致,返回false
,如果一致,再比較。
由於JavaScript這個設計缺陷,不要使用==
===
比較。
NaN與任何值都不相等包括自己 唯一能判斷的是isNaN函式通過isNaN(NaN)
同樣跟Python一樣因為計算機無法精確表示無限迴圈小數 所以浮點數也最好不要比較
null和undefined
null表示空與0和字串‘’不一樣,0是一個數值,''表示長度為0的字串,而null
表示“空”,重點' '中間加一個空格能夠被判斷成True,而前面三個都是False。
undefined
表示值未定義 僅在判斷函式引數是否傳遞的情況下有用
陣列
陣列是一組按順序排列的集合,集合的每個值稱為元素。JavaScript的陣列可以包括任意資料型別
例如:
[1, 2, 3.14, 'Hello', null, true];
另一種建立陣列的方法是通過Array()
函式實現:
new Array(1, 2, 3); // 建立了陣列[1, 2, 3]
和Python的list一樣用索引訪問
物件
JavaScript的物件是一組由鍵-值組成的無序集合,例如:
var person = {
name: 'Bob',
age: 20,
tags: ['js', 'web', 'mobile'],
city: 'Beijing',
hasCar: true,
zipcode: null
};
JavaScript物件的鍵都是字串型別,值可以是任意資料型別。上述物件每個鍵又稱為物件的屬性,例如,person
的name
屬性為'Bob'
,zipcode
屬性為null
。
要獲取一個物件的屬性,我們用物件變數.屬性名
的方式:
person.name; // 'Bob'
person.zipcode; // null
變數
變數名是大小寫英文、數字、$
和_
的組合,不能用數字開頭,var表示宣告變數
使用var宣告的變數不是全域性變數,它的範圍被限制在該變數被申明的函式體內,同名變數在不同的函式體內互不衝突