以下說明建議安裝node.js環境,實際操作會較有印象。
資料型態
> typeof 1 //Number
'number'
> typeof 'abc' //String
'string'
> typeof true //Boolean
'boolean'
> typeof {} //Object
'object'
> typeof undefined //undefined
'undefined'
> typeof null //null
'object'
> typeof function() {}; //Function
'function'
- instanceof:用來檢視某個物件是哪個型態的實例
> var x = {};
undefined
> x instanceof Object;
true
> [] instanceof Object;
true
> [] instanceof Boolean;
false
- Number
- 沒有整數與浮點數的差別
- 都是IEEE754 64位元浮點數
- 最小值Number.MIN_VALUE
- 最大值Numner.MAX_VALUE
> Number.MIN_VALUE
5e-324
> Number.MIN_SAFE_INTEGER
-9007199254740991
> Number.MAX_VALUE
1.7976931348623157e+308
> Number.MAX_SAFE_INTEGER
9007199254740991
- 若使用位元運算(如:>>,<<等),結果會是32位元有號整數。
- 不建議使用位元運算
- 宣告數值時預設為10進位整數
- 也可0開頭表示8進位整數
- 或是0x開頭表示16進位整數
- 嚴格模式下不允許使用8進位
> 100
100
> 0100
64
> 0xFF
255
> 1.234
1.234
> 1.234E10
12340000000
- 數值的特殊值
- 無限大
- 正無限大:Infinity
- 負無限大:-Infinity
> Infinity
Infinity
> -Infinity
-Infinity
> Number.POSITIVE_INFINITY
Infinity
> Number.NEGATIVE_INFINITY
-Infinity
- 非數值(Not a Number)
- 表示為NaN,也可用Number.NaN取得
- NaN不等於任何值,NaN也不等於NaN
- 故無法直接測試NaN === NaN
- 有isNaN函式,但無法自動轉型成數字得值,都會讓isNaN的結果為true,故非絕對準確。
- 但可利用NaN是JavaScript中唯一不等於自身的值之特性改採用 value !== value來判別。
- 更特殊的是,typeof NaN的結果是number
> var a = 1/'a'
undefined
> a
NaN
> isNaN(a)
true
> isNaN('abcdefg')
true
> isNaN(undefined)
true
> function isRealNaN(value) {
... return value !== value;
... }
undefined
> isRealNaN(a)
true
> isRealNaN('abcdefg')
false
> isRealNaN(undefined)
false
> typeof NaN
'number'
- String
- 可使用單引號或雙引號來包著一串文字,都是字串
- JavaScript中沒有字元
- 習慣在JavaScript程式中使用單引號,將雙引號保留在HTML中使用。
> typeof 'A'
'string'
> typeof "A"
'string'
> var html = '<input type="text" value="123">';
undefined
> html
'<input type="text" value="123">'
- Boolean
> typeof true
'boolean'
> typeof false
'boolean'
- Array
- 是物件(Object)
- 以[ ]包覆並以逗點分隔的一組物件
> typeof new Array();
'object'
> var arr = ['a',1,true]
undefined
> arr
[ 'a', 1, true ]
> typeof arr
'object'
- Object
- 即是指物件(Object),除了基本資料型態外都是Object的實例。
- 以{}產生物件,其屬性是以逗點分隔之一組name:value pair
- 屬性可以用.來存取,也可以['name']
> var man = {name:'Peter',age:23};
undefined
> man
{ name: 'Peter', age: 23 }
> man.age
23
> man['age']
23
> typeof man;
'object'
> typeof new Object()
'object'
> typeof {}
'object'
> typeof []
'object'
- null
- 表示沒有任何東西
- 不參考至任何物件,可將變數設為null
- 可用===測試變數是否為null
- 特殊行為:
- 對null做typeof會是object
- 對null做instanceof會是false
> var x = null;
undefined
> x === null
true
> typeof null
'object'
> null instanceof Object
false
- undefined
- 欲取得沒有指定任何值的變數或屬性,會出現undefined
- 對undefined做typeof會是undefined
- undefined會等於undefined
> var x = null
undefined
> var y
undefined
> x
null
> y
undefined
> undefined === undefined
true
沒有留言:
張貼留言