重構片段一:循環
舉例:之前習慣順著邏輯思路一層層往下寫
function test1(arr) {
? for (let i = 1; i < arr.length; i++) {
? ? ? arr[i] *= 2
? ? ? if (arr[i] % 2 === 0) {
? ? ? ? ? doSomething(arr[i])
? ? ? }
? }
}
聲明式方式重寫這段代碼
function test1(arr) {
? const evenNumbers = n => n % 2 === 0
?
? arr.slice(1)
? ? ? .map(v => v * 2)
? ? ? .filter(evenNumbers)
? ? ? .forEach(v => doSomething(v)) ? ?
}
for in循環怎么使用,<!-- more -->
緊接著上面demo看
重構片段二:常用的處理數組的方法
slice — arrayObject.slice(start,end)
slice 返回一個子數組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。
不設定end參數,表示獲取從start 到 數組結尾的所有元素。
map
arr.map([1, 2, 3], function(num){ return num * 3; });
=> [3, 6, 9]
jsp中寫一個for循環,?
通過對數組里的每個元素調用轉換函數(iteratee迭代器)生成一個與之相對應的數組。
filter
遍歷數組中的每個值,返回所有通過函數真值檢測的元素所組成的數組。
?
重構片段三:使用箭頭函數
用for實現無限循環的寫法?箭頭函數是es6中新語法
var reflect = function(value) {
? return value;
};
等同于:
let reflect = value => value;
let也是es6新語法,我理解的是它比var更嚴謹,因為let聲明的變量只在所在的代碼塊內有效
如果只有一個表達式,大括號{...}和return都可以省略.
兩個for循環怎么用vhdl寫。那么問題來了- 我們為什么使用箭頭函數?
我們暫且不談代碼更加簡潔 這個事,更重要的是,this總是指代外層調用對象,這樣就不再需要var that = this.
?
?
用for循環寫1加到100、?