這里只是針對一些平時不注意的基礎知識點的羅列
- JavaScript不區(qū)分整數和浮點數
NaN; // NaN表示Not a Number酌伊,當無法計算結果時用NaN表示
Infinity; // Infinity表示無限大惧辈,當數值超過了JavaScript的Number所能表示的最大值時蹬屹,就表示為Infinity
2 / 0; // Infinity
0 / 0; // NaN
-
==
是值的比較可以自動轉換误趴,===
不會自動轉換 - 不要直接比較浮點型的數 因為js的浮點型會出現誤差
- null 表示空值 而undefined 表示未定義
- 數組取超出邊界的數據 會返回undefined
- 字符串是不可變的 你可以直接重新復制但是 不能直接改變其中某位的數據
- splice 是數組的萬能方法
- in 方法判斷是否擁有這個屬性,可以是繼承來的 hasOwnProperty()判斷自身是否有這個屬性
var xiaoming = {
name: '小明'
};
'toString' in xiaoming; // true
xiaoming.hasOwnProperty('name'); // true
xiaoming.hasOwnProperty('toString'); // false
- for循環(huán)的一個變體是for ... in循環(huán)点额,它可以把一個對象的所有屬性依次循環(huán)出來:對于數組for ... in循環(huán)可以直接循環(huán)出Array的索引
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
alert(key); // 'name', 'age', 'city'
}
var a = ['A', 'B', 'C'];
for (var i in a) {
alert(i); // '0', '1', '2'
alert(a[i]); // 'A', 'B', 'C'
}
- ES6 引入新對象 Map 和 Set
- ES6標準引入了新的iterable類型钾挟,Array洁灵、Map和Set都屬于iterable類型。具有iterable類型的集合可以通過新的for ... of循環(huán)來遍歷
var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // 遍歷Array
alert(x);
}
for (var x of s) { // 遍歷Set
alert(x);
}
for (var x of m) { // 遍歷Map
alert(x[0] + '=' + x[1]);
}
- 比上面更好的方式是直接使用iterable內置的forEach方法
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向當前元素的值
// index: 指向當前索引
// array: 指向Array對象本身
alert(element);
});
- 函數內部 關鍵字arguments掺出,它只在函數內部起作用徽千,并且永遠指向當前函數的調用者傳入的所有參數。arguments類似Array但它不是一個Array
- 閉包大多數大多數的時候不要調用外部參數 調用的話需要作為參數傳入 但是如果 這個函數需要維護一個當前狀態(tài)的話 可以引用外部的參數
- Arraw Function(箭頭函數) 是ES6的新語法 是function 的簡化寫法
// 兩個參數:
(x, y) => x * x + y * y
// 無參數:
() => 3.14
// 可變參數:
(x, y, ...rest) => {
var i, sum = x + y;
for (i=0; i<rest.length; i++) {
sum += rest[i];
}
return sum;
}
- Date
var now = new Date();
now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
now.getFullYear(); // 2015, 年份
now.getMonth(); // 5, 月份蛛砰,注意月份范圍是0~11罐栈,5表示六月
now.getDate(); // 24, 表示24號
now.getDay(); // 3, 表示星期三
now.getHours(); // 19, 24小時制
now.getMinutes(); // 49, 分鐘
now.getSeconds(); // 22, 秒
now.getMilliseconds(); // 875, 毫秒數
now.getTime(); // 1435146562875, 以number形式表示的時間戳
;
var d = new Date(2015, 5, 19, 20, 15, 30, 123);
d; // Fri Jun 19 2015 20:15:30 GMT+0800 (CST)
//你可能觀察到了一個非常非衬喑坑爹的地方荠诬,就是JavaScript的月份范圍用整數表示是0~11琅翻,0表示一月,1表示二月……柑贞,所以要表示6月方椎,我們傳入的是5
;
//時間戳
var d = new Date(1435146562875);
d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
var d = new Date(1435146562875);
d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
钧嘶;
//時區(qū)
var d = new Date(1435146562875);
d.toLocaleString(); // '2015/6/24 下午7:49:22'棠众,本地時間(北京時區(qū)+8:00),顯示的字符串與操作系統(tǒng)設定的格式有關
d.toUTCString(); // 'Wed, 24 Jun 2015 11:49:22 GMT'有决,UTC時間闸拿,與本地時間相差8小時
- RegExp
sdf