1. 程式人生 > >JS:Basic JavaScript入門(二)--陣列、佇列

JS:Basic JavaScript入門(二)--陣列、佇列

1. Store Multiple Values in one Variable using JavaScript Arrays


使用 陣列,我們可以在一個地方儲存多個數據。

你以左方括號[開始定義一個數組,以右方括號]結束定義,並把每個條目之間用逗號隔開,就像這樣:
var sandwich = [“peanut butter”, “jelly”, “bread”]。

2. Manipulate Arrays With push


一個簡單的方法將資料追加到一個數組的末尾是通過 push() 函式。

.push() 接受把一個或多個引數,並把它“推”入到陣列的末尾。

    var arr = [1,2,3];
    arr.push(4);
    // 現在arr的值為 [1,2,3,4]

3. Manipulate Arrays With pop


改變陣列中資料的另一種方法是用 .pop() 函式。

.pop() 函式用來“丟擲”一個數組末尾的值。我們可以把這個“丟擲”的值賦給一個變數儲存起來。

陣列中任何型別的條目(數值,字串,甚至是陣列)可以被“丟擲來” 。

舉個例子, 對於這段程式碼
var oneDown = [1, 4, 6].pop();
現在 oneDown 的值為 6 ,陣列變成了 [1, 4]。

4. Manipulate Arrays With shift


pop() 函式用來移出陣列中最後一個元素。如果想要移出第一個元素要怎麼辦呢?

這就是 .shift() 的用武之地。它的工作原理就像 .pop(),但它移除的是第一個元素,而不是最後一個。

5. Manipulate Arrays With unshift


你不僅可以 shift(移出)陣列中的第一個元素,你也可以 unshift(移入)一個元素到陣列的頭部。

.unshift() 函式用起來就像 .push() 函式一樣, 但不是在陣列的末尾新增元素,而是在陣列的頭部新增元素。

6. Write Reusable JavaScript with Functions


在 JavaScript 中,我們可以把程式碼的重複部分抽取出來,放到一個函式(functions)中。

這是一個函式(function)的例子:

function functionName() {
  console.log("Hello World");
}

你可以通過函式名稱functionName加上後面的小括號來呼叫這個函式(function),就像這樣:

functionName();

每次呼叫函式時它會打印出訊息的“Hello World”到開發的控制檯上。所有的大括號之間的程式碼將在每次函式呼叫時執行。

7. Passing Values to Functions with Arguments


函式的引數parameters在函式中充當佔位符(也叫形參)的作用,引數可以為一個或多個。呼叫一個函式時所傳入的引數為實參,實參決定著形參真正的值。簡單理解:形參即形式、實參即內容。

這是帶有兩個引數的函式, param1 和 param2:

function testFun(param1, param2) {
  console.log(param1, param2);
}

接著我們呼叫 testFun:

testFun("Hello", "World");

我們傳遞了兩個引數, “Hello” 和 “World”。在函式內部,param1 等於“Hello”,param2 等於“World”。請注意,testFun 函式可以多次呼叫,每次呼叫時傳遞的引數會決定形參的實際值。

8. Global Scope and Functions


在 JavaScript 中, 作用域 涉及到變數的作用範圍。在函式外定義的變數具有 全域性 作用域。這意味著,具有全域性作用域的變數可以在程式碼的任何地方被呼叫。

這些沒有使用var關鍵字定義的變數,會被自動建立在全域性作用域中,形成全域性變數。當在程式碼其他地方無意間定義了一個變數,剛好變數名與全域性變數相同,這時會產生意想不到的後果。因此你應該總是使用var關鍵字來宣告你的變數。

9. Global vs Local Scope in Functions


一個程式中有可能具有相同名稱的 區域性 變數 和 全域性 變數。在這種情況下,區域性 變數將會優先於 全域性 變數。

下面為例:

var someVar = "Hat";
	function myFun() {
	  var someVar = "Head";
	  return someVar;
	}

函式 myFun 將會返回 “Head”,因為 區域性變數 優先順序更高。

10. Stand in Line


在電腦科學中 佇列(queue)是一個抽象的資料結構,佇列中的條目都是有秩序的。新的條目會被加到 佇列 的末尾,舊的條目會從 佇列 的頭部被移出。

11. Comparison with the Strict Equality Operator


嚴格相等運算子(=)是相對於相等操作符()的一種操作符。與相等操作符不同的是,它會同時比較元素的值和 資料型別。

舉個例子

3 === 3   // true
	3 === '3' // false

3 是一個 數字 型別的,而’3’ 是一個 字元 型別的,所以3不全等於’3’。

12. Selecting from many options with Switch Statements


如果你有非常多的選項需要選擇,可以使用switch語句。根據不同的引數值會匹配上不同的case分支,語句會從第一個匹配的case分支開始執行,直到碰到break就結束。

這是一個虛擬碼案例:

switch (num) {
  case value1:
    statement1;
    break;
  case value2:
    statement2;
    break;
...
  case valueN:
    statementN;
    break;
}

測試case 值使用嚴格相等運算子進行比較,break關鍵字告訴javascript停止執行語句。如果沒有break關鍵字,下一個語句會繼續執行。

13. Multiple Identical Options in Switch Statements


如果switch語句中的case分支的break 語句漏掉了,後面的 case語句會一直執行直到遇到break。如果你有多個輸入值和輸出值一樣,可以試試下面的switch語句:

switch(val) {
  case 1:
  case 2:
  case 3:
    result = "1, 2, or 3";
    break;
  case 4:
    result = "4 alone";
}

分支1、2、3將會產生相同的輸出結果。

14. Accessing Objects Properties with the Dot Operator


有兩種方式訪問物件屬性,一個是點操作符(.),一個是中括號操作符([])。

當你知道屬性的名稱的時候,使用點操作符。

這是一個使用點操作符讀取物件屬性的例子:

var myObj = {
  prop1: "val1",
  prop2: "val2"
};
var prop1val = myObj.prop1; // val1
var prop2val = myObj.prop2; // val2

15. Accessing Objects Properties with Bracket Notation


第二種訪問物件的方式就是中括號操作符([]),如果你想訪問的屬性的名稱有一個空格,這時你只能使用中括號操作符([])。

這是一個使用中括號操作符([])讀取物件屬性的例子:

var myObj = {
  "Space Name": "Kirk",
  "More Space": "Spock"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock

提示:屬性名稱中如果有空格,必須把屬性名稱用單引號或雙引號包裹起來。