最近在刷廖雪峰的JS教程缭嫡,把里面的自己不太清楚的東西在刷一遍。
教程網(wǎng)址:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000
數(shù)據(jù)類型:
- 簡(jiǎn)單類型:
String
抬闷、Number
妇蛀、Boolean
、Null
笤成、Undefined
- 復(fù)雜類型:
Object
- ES6新增類型:
Symbol
(感謝TimeTraveler指出)
數(shù)組:
- 修改Array中索引不會(huì)有任何錯(cuò)誤评架,不建議修改Array大小,并且確保索引不會(huì)越界炕泳。
對(duì)象:
- 對(duì)象的屬性名如果不是一個(gè)有效的變量古程,例如
middle-school
,就需要用''括起來喊崖。訪問這個(gè)屬性也無法使用.操作符雇逞,必須用['xxx']
來訪問茁裙。(可以利用這個(gè)方式獲取部分自動(dòng)生成屬性值) - 可以利用
in
判斷一個(gè)對(duì)象的屬性是否存在,當(dāng)是需要注意掉蔬,它可能是對(duì)象繼承得到的,例如:
var xiaoming = {
name: '小明',
birth: 1990,
school: 'No.1 Middle School',
height: 1.70,
weight: 65,
score: null
};
'name' in xiaoming; // true
'grade' in xiaoming; // false
'toString' in xiaoming; // true(由object繼承而來)
- 可以用
hasOwnProperty()
方法來判斷一個(gè)屬性是否為對(duì)象自身擁有的屬性女轿,例如:
var xiaoming = {
name: '小明'
};
xiaoming.hasOwnProperty('name'); // true
xiaoming.hasOwnProperty('toString'); // false
條件判斷:
-
if...else...
語句的執(zhí)行特點(diǎn)是二選一蛉迹,在多個(gè)if...else...
語句中放妈,如果某個(gè)條件成立,則后續(xù)就不再繼續(xù)判斷了芜抒。 - JavaScript把
null
、undefined
攘宙、0
拐迁、NaN
和空字符串''
視為false,其他值一概視為true
唠亚。
循環(huán):
- for循環(huán)的一個(gè)變體是
for ... in
循環(huán)持痰,它可以把一個(gè)對(duì)象的所有屬性依次循環(huán)出來,需要注意的是割卖,循環(huán)會(huì)把繼承的屬性加上患雏,如果要過濾掉對(duì)象繼承的屬性,用hasOwnProperty()
來實(shí)現(xiàn):
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
if (o.hasOwnProperty(key)) {
alert(key); // 'name', 'age', 'city'
}
}
iterable:
- 為了統(tǒng)一集合類型丙挽,ES6標(biāo)準(zhǔn)引入了新的
iterable
類型,Array
颜阐、Map
和Set
都屬于iterable
類型。 - 具有
iterable
類型的集合可以通過新的for ... of
循環(huán)來遍歷凳怨。(只會(huì)循環(huán)集合本身) - 更好的方式是直接使用
iterable
內(nèi)置的forEach
方法,它接收一個(gè)函數(shù)紫新,每次迭代就自動(dòng)回調(diào)該函數(shù)李剖。
Array下輸出的為(element, index, array);
Map下輸出的為(value, key, map);
Set下輸出的為(element, sameElement, set); // Set沒有索引,因此回調(diào)函數(shù)的前兩個(gè)參數(shù)都是元素本身