廖雪峰JS學習總結-入門篇

yellowlemon發表於2017-03-08

最近在刷廖雪峰的JS教程,把裡面的自己不太清楚的東西在刷一遍。
教程網址:www.liaoxuefeng.com/wiki/001434…

資料型別:
  • 簡單型別:StringNumberBooleanNullUndefined
  • 複雜型別:Object
  • ES6新增型別:Symbol(感謝TimeTraveler指出)
陣列:
  • 修改Array中索引不會有任何錯誤,不建議修改Array大小,並且確保索引不會越界。
物件:
  • 物件的屬性名如果不是一個有效的變數,例如middle-school,就需要用''括起來。訪問這個屬性也無法使用.操作符,必須用['xxx']來訪問。(可以利用這個方式獲取部分自動生成屬性值)
  • 可以利用in判斷一個物件的屬性是否存在,當是需要注意,它可能是物件繼承得到的,例如:
    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()方法來判斷一個屬性是否為物件自身擁有的屬性,例如:
    var xiaoming = {
      name: '小明'
    };
    xiaoming.hasOwnProperty('name'); // true
    xiaoming.hasOwnProperty('toString'); // false複製程式碼
條件判斷:
  • if...else...語句的執行特點是二選一,在多個if...else...語句中,如果某個條件成立,則後續就不再繼續判斷了。
  • JavaScript把nullundefined0NaN和空字串''視為false,其他值一概視為true
迴圈:
  • for迴圈的一個變體是for ... in迴圈,它可以把一個物件的所有屬性依次迴圈出來,需要注意的是,迴圈會把繼承的屬性加上,如果要過濾掉物件繼承的屬性,用hasOwnProperty()來實現:
    var o = {
      name: 'Jack',
      age: 20,
      city: 'Beijing'
    };
    for (var key in o) {
      if (o.hasOwnProperty(key)) {
          alert(key); // 'name', 'age', 'city'
      }
    }複製程式碼
iterable:
  • 為了統一集合型別,ES6標準引入了新的iterable型別,ArrayMapSet都屬於iterable型別。
  • 具有iterable型別的集合可以通過新的for ... of迴圈來遍歷。(只會迴圈集合本身)
  • 更好的方式是直接使用iterable內建的forEach方法,它接收一個函式,每次迭代就自動回撥該函式。
    Array下輸出的為(element, index, array);
    Map下輸出的為(value, key, map);
    Set下輸出的為(element, sameElement, set); // Set沒有索引,因此回撥函式的前兩個引數都是元素本身複製程式碼

相關文章