1 2 3 4 5 6 7  lambda [javascript] [ES6] Comes in 2 flavors: - function expression - arroy function expression

## arrow function expression

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow%5Ffunctions

## function expression (this is just a lambda?)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function

 1 2 3  const getRectArea = function(width, height) { return width * height; }; 

## Rewriting function expressions as arrow function expressions

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  var elements = [ 'Hydrogen', 'Helium', 'Lithium', 'Beryllium' ]; // This statement returns the array: [8, 6, 7, 9] elements.map(function(element) { return element.length; }); // The regular function above can be written as the arrow function below elements.map((element) => { return element.length; }); // [8, 6, 7, 9] // When there is only one parameter, we can remove the surrounding parentheses elements.map(element => { return element.length; }); // [8, 6, 7, 9] // When the only statement in an arrow function is return, we can remove return and remove // the surrounding curly brackets elements.map(element => element.length); // [8, 6, 7, 9] // In this case, because we only need the length property, we can use destructuring parameter: // Notice that the length corresponds to the property we want to get whereas the // obviously non-special lengthFooBArX is just the name of a variable which can be changed // to any valid variable name you want elements.map(({ length: lengthFooBArX }) => lengthFooBArX); // [8, 6, 7, 9] // This destructuring parameter assignment can also be written as seen below. However, note that in // this example we are not assigning length value to the made up property. Instead, the literal name // itself of the variable length is used as the property we want to retrieve from the object. elements.map(({ length }) => length); // [8, 6, 7, 9]