1. 程式人生 > >for語句和arrow function

for語句和arrow function

for...each in:

他在宣告中的每一個都被貶低為ECMA-357(E4X)標準的一部分。E4X支援已被刪除。考慮使用for...of 代替。Firefox現在警告了每個使用者的使用情況,它從Firefox 57開始不再工作了。請參閱警告:對每個In迴圈中的JavaScript 1.6不支援遷移幫助。for語句中的每個for...of 在物件屬性的所有值上迭代指定的變數。對於每個不同的屬性,執行指定的語句。

語法:

for each (variable in object) {
  statement
}
變數
變數遍歷屬性值,可選地用var關鍵字宣告。這個變數是函式的區域性,而不是環。

物件
迭代屬性的物件。

陳述
為每個屬性執行的語句。若要在迴圈中執行多個語句,請使用塊語句({…})將這些語句分組。

for...in:

在for…in中,迭代遍歷物件的所有非符號、可列舉屬性。

迴圈中的A只對列舉、非符號屬性進行迭代。從內建建構函式(如Array和Object)建立的物件繼承了Object.prototype和String.prototype中的不可列舉屬性,如String的inde.f()方法或Object的toString()方法。迴圈將對物件本身的所有可列舉屬性以及物件從其建構函式的原型繼承的那些屬性進行迭代(原型鏈中更接近物件的屬性覆蓋原型的屬性)。

語法:

for (variable in object) { ...
}

變數
在每次迭代中,不同的屬性名被分配給變數。

物件

物件,其非符號可列舉屬性被迭代。

for...of:

for...of在可迭代物件(包括內建的String、Array,例如,類似於Array的引數或NodeList物件、TypedArray、Map和Set以及使用者定義的可迭代物件)上建立一個迴圈迭代,呼叫一個自定義迭代鉤子,該鉤子帶有針對每個不同p的值執行的語句物體的粗糙。

語法:

for (variable of iterable) {
  statement
}

變數
在每次迭代中,一個不同屬性的值被分配給變數。

可迭代的
可迭代屬性的物件。

arrow function:

箭頭函式表示式的語法比函式表示式短,並且沒有自己的this、.、super或new.target。這些函式表示式最適合於非方法函式,它們不能用作建構函式。

在HACKS.MZILLA.ORG上也可以看到“ES6的深度:箭頭函式”。
兩個因素影響了箭頭函式的引入:短的函式和不存在這個關鍵字。

語法:

(param1, param2, …, paramN) => { statements } 
(param1, param2, …, paramN) => expression
// 等效於:= > {返回表示式;}
// 當只有一個引數名時,括號是可選的:
(singleParam) => { statements }
singleParam => { statements }

//

一個沒有引數的函式的引數列表應該用一對圓括號來寫。
()= > {語句}

// Parenthesize the body of function to return an object literal expression:
params => ({foo: bar}) 

// Rest parameters and default parameters are supported
(param1, param2, ...rest) => { statements } 
(param1 = defaultValue1, param2, …, paramN = defaultValueN) => { 
statements } 

// Destructuring within the parameter list is also supported
var f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
f(); // 6

Shorter functions

var elements = [
  'Hydrogen',
  'Helium', 'Lithium', 'Beryllium' ]; elements.map(function(element ) { return element.length; }); // [8, 6, 7, 9] elements.map(element => { return element.length; }); // [8, 6, 7, 9] elements.map(element => element.length); // [8, 6, 7, 9] elements.map(({ length }) => length); // [8, 6, 7, 9]