JavaScript 精簡筆記

來源:互聯網
上載者:User

標籤:fun   包括   property   類型   ring   比較   val   統一   math   

JavaScript 精簡筆記,摘自 廖雪峰的官方網站。

[From] https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000

 

‘use strict‘; //strict 模式

 

JavaScript嚴格區分大小寫。

 

NaN === NaN; // false

唯一能判斷NaN的方法是通過isNaN()函數。

 

1 / 3 === (1 - 2 / 3); // false

這不是JavaScript的設計缺陷。浮點數在運算過程中會產生誤差,因為電腦無法精確表示無限迴圈小數。要比較兩個浮點數是否相等,只能計算它們之差的絕對值,看是否小於某個閾值:

Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true

 

多行字串: `......`

模板字串: `你好, ${name}, 你今年${age}歲了!`

操作字串: toUpperCase, toLowerCase, indexOf, substring

 

數組:

  var arr = [10, 20, ‘30‘, ‘xyz‘];  arr.indexOf(10); // 元素10的索引為0  var arr = [‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘];  arr.slice(0, 3); // 從索引0開始,到索引3結束,但不包括索引3: [‘A‘, ‘B‘, ‘C‘]  arr.slice(3); // 從索引3開始到結束: [‘D‘, ‘E‘, ‘F‘, ‘G‘]  var arr = [‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘];  var aCopy = arr.slice(); // 複製數組  aCopy; // [‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘]  aCopy === arr; // false  push()向Array的末尾添加若干元素,pop()則把Array的最後一個元素刪除掉。  如果要往Array的頭部添加若干元素,使用unshift()方法,shift()方法則把Array的第一個元素刪掉。  sort()可以對當前Array進行排序,它會直接修改當前Array的元素位置,直接調用時,按照預設順序排序。  reverse()把整個Array的元素給掉個個,也就是反轉。  var arr = [‘Microsoft‘, ‘Apple‘, ‘Yahoo‘, ‘AOL‘, ‘Excite‘, ‘Oracle‘];  // 從索引2開始刪除3個元素,然後再添加兩個元素:  arr.splice(2, 3, ‘Google‘, ‘Facebook‘); // 返回刪除的元素 [‘Yahoo‘, ‘AOL‘, ‘Excite‘]  arr; // [‘Microsoft‘, ‘Apple‘, ‘Google‘, ‘Facebook‘, ‘Oracle‘]  // 只刪除,不添加:  arr.splice(2, 2); // [‘Google‘, ‘Facebook‘]  arr; // [‘Microsoft‘, ‘Apple‘, ‘Oracle‘]  // 只添加,不刪除:  arr.splice(2, 0, ‘Google‘, ‘Facebook‘); // 返回[],因為沒有刪除任何元素  arr; // [‘Microsoft‘, ‘Apple‘, ‘Google‘, ‘Facebook‘, ‘Oracle‘]  concat()方法把當前的Array和另一個Array串連起來,並返回一個新的Array。  var arr = [‘A‘, ‘B‘, ‘C‘, 1, 2, 3];  arr.join(‘-‘); // ‘A-B-C-1-2-3‘

 

 對象:

  如果我們要檢測xiaoming是否擁有某一屬性,可以用in操作符。 ‘name‘ in xiaoming; // true
  要判斷一個屬性是否是xiaoming自身擁有的,而不是繼承得到的,可以用hasOwnProperty()方法。 xiaoming.hasOwnProperty(‘name‘); // true

 

條件判斷:
  JavaScript把null、undefined、0、NaN和Null 字元串‘‘視為false,其他值一概視為true。

 

迴圈:
  for迴圈的一個變體是for ... in迴圈,它可以把一個對象的所有屬性依次迴圈出來。要過濾掉對象繼承的屬性,用hasOwnProperty()來實現。
  由於Array也是對象,而它的每個元素的索引被視為對象的屬性,因此,for ... in迴圈可以直接迴圈出Array的索引。

 

Map:

  Map是一組索引值對的結構,具有極快的尋找速度。  由於一個key只能對應一個value,所以,多次對一個key放入value,後面的值會把前面的值衝掉。  var m = new Map([[‘Michael‘, 95], [‘Bob‘, 75], [‘Tracy‘, 85]]);  m.get(‘Michael‘); // 95  var m = new Map(); // 空Map  m.set(‘Adam‘, 67); // 添加新的key-value  m.set(‘Bob‘, 59);  m.has(‘Adam‘); // 是否存在key ‘Adam‘: true  m.get(‘Adam‘); // 67  m.delete(‘Adam‘); // 刪除key ‘Adam‘  m.get(‘Adam‘); // undefined

 

Set:
  Set和Map類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在Set中,沒有重複的key。
  通過add(key)方法可以添加元素到Set中,可以重複添加,但不會有效果。
  通過delete(key)方法可以刪除元素。
  var s1 = new Set(); // 空Set
  var s2 = new Set([1, 2, 3]); // 含1, 2, 3

 

iterable:

遍曆Array可以採用下標迴圈,遍曆Map和Set就無法使用下標。為了統一集合類型,ES6標準引入了新的iterable類型,Array、Map和Set都屬於iterable類型。具有iterable類型的集合可以通過新的for ... of迴圈來遍曆。    var a = [‘A‘, ‘B‘, ‘C‘];    a.name = ‘Hello‘;    for (var x in a) {        alert(x); // ‘0‘, ‘1‘, ‘2‘, ‘name‘    }for ... in迴圈將把name包括在內,但Array的length屬性卻不包括在內。 for ... of迴圈則完全修複了這些問題,它只迴圈集合本身的元素。    var a = [‘A‘, ‘B‘, ‘C‘];    a.name = ‘Hello‘;    for (var x of a) {        alert(x); // ‘A‘, ‘B‘, ‘C‘    }更好的方式是直接使用iterable內建的forEach方法,它接收一個函數,每次迭代就自動回調該函數。    var a = [‘A‘, ‘B‘, ‘C‘];    a.forEach(function (element, index, array) {        // element: 指向當前元素的值        // index: 指向當前索引        // array: 指向Array對象本身        alert(element);    });Set與Array類似,但Set沒有索引,因此回呼函數的前兩個參數都是元素本身:    var s = new Set([‘A‘, ‘B‘, ‘C‘]);    s.forEach(function (element, sameElement, set) {        alert(element);    });Map的回呼函數參數依次為value、key和map本身:    var m = new Map([[1, ‘x‘], [2, ‘y‘], [3, ‘z‘]]);    m.forEach(function (value, key, map) {        alert(value);    });

 

JavaScript 精簡筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.