Ответ 1
Двойной двоеточие подробно описано здесь и в настоящее время является предложением ES7, поэтому оно еще не установлено в камне, и есть еще много обсуждать его. Он также не позволяет передавать параметры. поэтому он имеет ограниченное использование, если у вас есть эта необходимость.
Существует также функция функции "жирная стрелка" (используется для фактической функции, а не для ее вызова), которая лексически связывается с этим...
// Basic syntax:
(param1, param2, paramN) => { statements }
(param1, param2, paramN) => expression
// equivalent to: => { return expression; }
// Parentheses are optional when there only one argument:
(singleParam) => { statements }
singleParam => { statements }
// A function with no arguments requires parentheses:
() => { statements }
// Advanced:
// Parenthesize the body to return an object literal expression:
params => ({foo: bar})
// Rest parameters are supported
(param1, param2, ...rest) => { statements }