1、pop()
函數用來移出數組中最后一個元素;shift()
函數移出數組中的第一項,unshift
(移入)一個元素到數組的頭部。
例如:
var myArray = [["John", 23], ["dog", 3]]; var a=myArray.pop(); //var myArray = [ ["John", 23] ]; 移出最后一個 var a=myArray.shift(); //var myArray = [ ["dog", 3] ]; 移出第一個 var c=myArray.unshift(["ccc",1]); //var myArray =[["ccc",1],["John", 23], ["dog", 3]]; 數組["ccc",1]插入了頭部,成為了第一個
2、所有的比較操作符返回的都是一個boolean值,要么是 true
要么是false
。使用 if/else
語句來做比較然后返回true
或false
已經成為大家的共識:
例如:
function isEqual(a,b) { if (a === b) { return true; } else { return false; } }
可以簡化成:
function isEqual(a,b) { return a === b; }
3、有兩種方式訪問對象屬性,一個是點操作符(.
),一個是中括號操作符([]
)。當你知道屬性的名稱的時候,使用點操作符。
1)點操作符(.
)
例如:
var myObj = { prop1: "val1", prop2: "val2" }; var prop1val = myObj.prop1; // val1 var prop2val = myObj.prop2; // val2 //或 var testObj = { "hat": "ballcap", "shirt": "jersey", "shoes": "cleats" }; var hatValue = testObj.hat; // ballcap 點操作符 var shirtValue = testObj.shirt; // jersey 點操作符
2)中括號操作符([]
):如果你想訪問的屬性的名稱有一個空格,這時你只能使用中括號操作符([]
)。
var myObj = { "Space Name": "Kirk", "More Space": "Spock" }; myObj["Space Name"]; // Kirk myObj['More Space']; // Spock
//提示:屬性名稱中如果有空格,必須把屬性名稱用單引號或雙引號包裹起來。
注意:
1)當你創建了一個對象后,你可以用點操作符或中括號操作符來更新對象的屬性。
// 舉例 var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"] };
讓我們更改它的名稱為 "Happy Camper",這有兩種方式來更新對象的name
屬性:
var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"] }; ourDog.name = "Happy Camper"; //點操作符
ourDog["name"]= "Happy Camper"; //中括號操作符
2)也可以像更改屬性一樣給對象添加屬性。
// 舉例 var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"] };
給myDog
添加一個"bark"
屬性,設置它的值為狗的聲音,例如:"bow-wow"。
var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"] }; ourDog.bark = "bow-wow"; //點操作符
ourDog["bark"]= "bow-wow"; //中括號操作符
3)刪除對象的屬性 (刪除ourDog對象的"tails"
屬性。)
// 舉例 var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"], "bark": "bow-wow" };
delete ourDog.bark; //點操作符
4)中括號操作符的另一個使用方式是用變量來訪問一個屬性。當你需要遍歷對象的屬性列表或查表時,這種方式極為有用。
使用變量來訪問屬性的例子:
var someProp = "propName"; var myObj = { propName: "Some Value" } myObj[someProp]; // "Some Value"
以及:
var myDog = "Hunter"; var dogs = { Fido: "Mutt", Hunter: "Doberman", Snoopie: "Beagle" } var breed = dogs[myDog]; // "Hunter" console.log(breed)// "Doberman"
提示:當我們通過變量名訪問屬性的時候,不需要給變量名包裹引號。因為實際上我們使用的是變量的值,而不是變量的名稱。
4、檢查一個對象屬性是否存在是非常有用的,我們可以用.hasOwnProperty(propname)
方法來檢查對象是否有該屬性。如果有返回true
,反之返回 false
。
//舉例1 var myObj = { top: "hat", bottom: "pants" }; myObj.hasOwnProperty("top"); // true myObj.hasOwnProperty("middle"); // false
//舉例2 //用函數checkObj檢查myObj是否有checkProp屬性,如果屬性存在,返回屬性對應的值,如果不存在,返回 "Not Found"。 //代碼如下 var myObj = { gift: "pony", pet: "kitten", bed: "sleigh" }; function checkObj(checkProp) { var tr = myObj.hasOwnProperty(checkProp); //檢查對象是否存在,將結果賦值給tr if(tr===true){ //判斷tr是否true ?(存在) return myObj[checkProp]; // //存在則返回屬性對應的值 }else{ return "Not Found"; //不存在,則返回“Not Found”
} }
checkObj("gift");
5、for循環:
for循環中的三個表達式用分號隔開:
for ([初始化]; [條件判斷]; [計數器])
初始化
語句只會在執行循環開始之前執行一次。它通常用於定義和設置你的循環變量。
條件判斷
語句會在每一輪循環的開始執行,只要條件判斷為 true
就會繼續執行循環。
當條件為false
的時候,循環將停止執行。這意味着,如果條件在一開始就為 false
,這個循環將不會執行。
計數器
是在每一輪循環結束時執行,通常用於遞增或遞減
//舉例1: var ourArray = []; for (var i = 0; i < 5; i++) { ourArray.push(i); } //先初始化i = 0,條件 i < 5 為真,進入第一次循環,執行大括號里的代碼,第一次循環結束。遞增i的值,條件判斷,就這樣依次執行下去,直到條件判斷為假,整個循環結束。 //舉例2:通過更改我們的 計數器,我們可以按照偶數順序來迭代。 var ourArray = []; for (var i = 0; i < 10; i += 2) { ourArray.push(i); } //初始化 i = 0,當 i < 10 的時候繼續循環。i += 2 讓 i 每次循環之后增加2。循環結束后,ourArray 的值為 [0,2,4,6,8]。奇數同上 //舉例3:for循環也可以逆向迭代 var ourArray = []; for (var i=10; i > 0; i-=2) { ourArray.push(i); } //為了能夠從后往前兩兩倒數,需要改變我們的 初始化,條件判斷 和 計數器。讓 i = 10,並且當 i > 0 的時候才繼續循環。使用 i-=2 來讓 i 每次循環遞減 2。循環結束后,ourArray 的值為 [10,8,6,4,2]。 //舉例4:for 循環迭代輸出一個數組的每個元素 var arr = [10,9,8,7,6]; for (var i=0; i < arr.length; i++) { console.log(arr[i]); } //數組的索引從零開始的,這意味着數組的最后一個元素的下標是:數組的長度 - 1。我們這個循環的 條件 是 i < arr.length,當 i 的值為 長度-1 的時候循環就停止了 //舉例5:二維數組,可以使用相同的邏輯,先遍歷外面的數組,再遍歷里面的子數組。 //1): var arr = [ [1,2], [3,4], [5,6] ]; for (var i=0; i < arr.length; i++) { for (var j=0; j < arr[i].length; j++) { console.log(arr[i][j]); } } //一次輸出 arr 中的每個子元素。提示,對於內部循環,我們可以通過 arr[i] 的 .length 來獲得子數組的長度,因為 arr[i] 的本身就是一個數組。 //2): function multiplyAll(arr) { var product = 1; for (var i=0;i<arr.length;i++){ for (var j=0;j<arr[i].length;j++){ product *= arr[i][j]; } } return product; } multiplyAll([[1,2],[3,4],[5,6,7]]); //函數 multiplyAll,獲得 arr 內部數組的每個數字相乘的結果 product。
6、while循環:
另一種類型的 JavaScript 循環被稱為while循環
,因為它規定,當(while)條件為真,循環才會執行,反之不執行。
//舉例
var ourArray = []; var i = 0; while(i < 5) { ourArray.push(i); i++; }
7、計算機的行為只有兩種:確定性和隨機性。Math.random()
用來生成一個在0(包括0)到1(不包括1)之間的隨機小數,因此Math.random()
可能返回0但絕不會返回1。
//舉例: function myFunction(arr) { var arr = Math.random(); return arr; } //myFunction 來生成一個隨機數。
1)生成隨機小數很棒,但隨機數更有用的地方在於生成隨機整數
例子:
- 用
Math.random()
生成一個隨機小數。 - 把這個隨機小數乘以
20
。 - 用
Math.floor()
向下取整 獲得它最近的整數。 - 注意:記住
Math.random()
永遠不會返回1
。同時因為我們是在用Math.floor()
向下取整,所以最終我們獲得的結果不可能有20
。這確保了我們獲得了一個在0到19之間的整數
//把操作連綴起來,代碼類似於下面: Math.floor(Math.random() * 20);
例子: //生成一個 0 到 9之間的隨機整數。 function myFunction(arr) { var arr= Math.floor(Math.random() * 10); return arr; }
2)要生成的隨機數是在兩個指定的數之間。
//需要定義一個最小值和一個最大值。 Math.floor(Math.random() * (max - min + 1)) + min //例子: function randomRange(myMin, myMax) { var myRandom = Math.floor(Math.random() * (myMax - myMin + 1)) + myMin; return myRandom; } var myRandom = randomRange(5, 15); //randomRange的函數,參數為myMin和myMax,返回一個在myMin(包括myMin)和myMax(包括myMax)之間的隨機數。
8、Regular expressions
正則表達式 被用來根據某種匹配模式來尋找strings
中的某些單詞。
舉例:如果我們想要找到字符串The dog chased the cat
中單詞 the
,我們可以使用下面的正則表達式: /the/gi
我們可以把這個正則表達式分成幾段:
/
是這個正則表達式的頭部
the
是我們想要匹配的模式
/
是這個正則表達式的尾部
g
代表着 global
(全局),意味着返回所有的匹配而不僅僅是第一個。
i
代表着忽略大小寫,意思是當我們尋找匹配的字符串的時候忽略掉字母的大小寫。
1)可以在正則表達式中使用特殊選擇器來選取特殊類型的值。
//特殊選擇器中的一種就是數字選擇器\d,意思是被用來獲取一個字符串的數字。 //在JavaScript中, 數字選擇器類似於: /\d/g。 //在選擇器后面添加一個加號標記(+),例如:/\d+/g,它允許這個正則表達式匹配一個或更多數字。 //尾部的g是'global'的簡寫,意思是允許這個正則表達式 找到所有的匹配而不是僅僅找到第一個匹配。 //例子:
/\d+/g
2)可以使用正則表達式選擇器 \s
來選擇一個字符串中的空白。
//空白字符有 " " (空格符)、\r (回車符)、\n (換行符)、\t (制表符) 和 \f (換頁符)。 //空白正則表達式類似於: /\s+/g
3)注意:正則表達式選擇器的大寫版本 來轉化任何匹配.
//例子: \s //匹配任何空白字符, \S //匹配任何非空白字符。