function factorial() { // 一個簡單的階乘遞歸 if (number == 1) { return number; } else { return number factorial(number - 1); } } console.log(factorial(5));
在遞歸以前,該函數會被掛起,以下圖:javascript
5 * factorial(4) 5 * 4 * factorial(3) 5 * 4 * 3 * factorial(2) 5 * 4 * 3 * 2 * factorial(1) 5 * 4 * 3 * 2 * 1 5 * 4 * 3 * 2 5 * 4 * 6 5 * 24 120
var numbers = []; // 經過 [] 操做符 var numbers = new Array(); // 經過構造函數 Array.isArray(numbers) // 判斷是否數組
.indexOf() // 查找元素,大小寫敏感,返回索引/返回-1 .join() // 將數組轉化爲字符串 .toString() // 將數組轉化爲字符串 A.concat(B) // 合併數組A和B並建立新數組 .splice(起始索引,長度,添加新數組,.....,...) // 從數組裏截取一個新數組 .push() // 將一個元素添加到末尾 .unshift() // 將一個元素添加到開頭 .pop() // 刪除數組末尾的元素 .shift() // 刪除數組的第一個元素 .splice(3, 0, 1, 2, 3) // 從索引爲3的位置開始插入1,2,3 .reverse() // 翻轉數組中的元素 .sort() // 按字典順序對元素進行排序 // 從小到大排序 fucntion compare(num1, num2) { return num1 - num2; } var nums = [...]; nums.sort(compare);
.forEach(square); // 對數組中的每一個元素使用square函數 .every(isEven) // 若每一個元素都知足isEven則返回true .some(isEven) // 只要有一個元素知足isEven則返回true .reduce(add) // 不斷對累加值和後續元素調用add函數,最終返回累加值 / 連接元素 .reduceRight() // 從右往左
.map(curve) // 返回一個通過curve函數處理後的數組 .filter() // 相似every,返回元素結果爲true的新數組 function isEven(num) { return num % 2 == 0; } function isOdd(num) { return num % 2 != 0; } var nums = []; for(i = 0; i < 10; ++i) { nums[i] = i+1; } var evens = nums.filter(isEven); // 2 4 6 8 10 var odds = nums.filter(isOdd); // 1 3 5 7 9
JavaScript: The Good Parts (O'Reilly) P64java
Array.matrix = function(numrows, numcols, initial) { // 建立多位數組 var arr = []; for (var i = 0; i < numrows; ++i) { var columns = []; for (var j = 0; j < numcols; ++j) { columns[j] = initial; } arr[i] = columns; } return arr; } var nums = Array.matrix(5,5,0); var strings = Array.matrix(5,5,"");