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

最近在刷廖雪峯的JS教程,把裏面的本身不太清楚的東西在刷一遍。
教程網址:www.liaoxuefeng.com/wiki/001434…javascript

數據類型:
  • 簡單類型: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沒有索引,所以回調函數的前兩個參數都是元素自己複製代碼
相關文章
相關標籤/搜索