() = & gt; {} что это значит? [Дубликат]

Попробуйте authbind:

http://manpages.ubuntu.com/manpages/hardy/man1/authbind.1.html

После установки , вы можете добавить файл с именем номера порта, который вы хотите использовать, в следующей папке: / etc / authbind / byport /

Дайте ему 500 разрешений с помощью chmod и измените право собственности на пользователя, которого вы хотите запустить программу под.

После этого выполните «authbind node ...» в качестве этого пользователя в вашем проекте.

314
задан jaybee 21 June 2016 в 23:53
поделиться

9 ответов

Что это

Это функция стрелки. Функции Arrow - это короткий синтаксис, введенный ECMAscript 6, который можно использовать аналогично тому, как вы будете использовать выражения функций. Другими словами, вы можете часто использовать их вместо выражений типа function (foo) {...}. Но у них есть некоторые важные отличия. Например, они не связывают свои собственные значения this (см. Ниже для обсуждения).

Функции Arrow являются частью спецификации ECMAscript 6, но не являются частью «нормального» JavaScript, используемого в большинстве браузеров сегодня. Однако они частично поддерживаются в Node v. 4.0 + и во многих браузерах (см. Ниже).

Вы можете прочитать больше в документации Mozilla о функциях стрелок .

Из документации Mozilla:

Выражение функции стрелки (также называемое функцией толстой стрелки) имеет более короткий синтаксис по сравнению с выражениями функции и лексически связывает значение this (не связывает его this , arguments , super или new.target ). Функции стрелок всегда анонимны. Эти функциональные выражения лучше всего подходят для функций, отличных от метода, и они не могут использоваться в качестве конструкторов.

Примечание о том, как this работает в функциях стрелок

из наиболее удобных функций функции стрелки похож на текст выше:

Функция стрелки ... лексически связывает значение this (не связывает его this. .)

. Это проще означает, что функция стрелки сохраняет значение this из своего контекста и не имеет своего this. Традиционная функция связывает свое this значение, требуя большого количества гимнастики, такой как self = this; и т. Д., Для доступа или манипулирования this от одной функции внутри другой функции. Для получения дополнительной информации по этой теме см. объяснение и примеры в документации Mozilla .

Пример кода

Пример (также из документов):

var a = [
  "We're up all night 'til the sun",
  "We're up all night to get some",
  "We're up all night for good fun",
  "We're up all night to get lucky"
];

// These two assignments are equivalent:

// Old-school:
var a2 = a.map(function(s){ return s.length });

// ECMAscript 6 using arrow functions
var a3 = a.map( s => s.length );

// both a2 and a3 will be equal to [31, 30, 31, 31]

Замечания о совместимости

Вы можете использовать функции стрелок в узле, но поддержка браузера является пятнистой.

Поддержка браузера для этой функции улучшилась немного, но он по-прежнему недостаточно распространен для большинства браузеров. По состоянию на 12 декабря 2017 года он поддерживается в текущих версиях:

  • Chrome (v. 45 +)
  • Firefox (версия 22 +)
  • Edge (v. 12 +)
  • Opera (v. 32 +)
  • Android Browser (версия 47+)
  • Opera Mobile (v 33 +)
  • Chrome для Android (v. 47 +)
  • Firefox для Android (версия 44 +)
  • Safari (v. 10+)
  • iOS Safari (v. 10.2 +)
  • Samsung Internet (v. 5 +)
  • Baidu Browser (v.7.12 +)

Не поддерживается в:

  • IE (через v. 11)
  • Opera Mini (через v. 8.0)
  • Blackberry Браузер (через v. 10)
  • IE Mobile (через v. 11)
  • UC Browser для Android (через 11.4)
  • QQ (через v 1.2)

Вы можете найти больше (и более актуальную) информацию на странице CanIUse.com (без аффилиации).

378
ответ дан Ed Cottrell 16 August 2018 в 00:56
поделиться
  • 1
    Спасибо, что предоставили список несовместимых браузеров . :) – Mistalis 23 December 2016 в 11:54
  • 2
    TypeScript также, похоже, поддерживает его. – mtyson 1 May 2017 в 19:39
  • 3
    Бонусные баллы за ссылку Daft Punk. – Livi17 21 July 2017 в 17:22

просто добавить еще один пример того, что лямбда может сделать без использования карты:

a = 10
b = 2

var mixed = (a,b) => a * b; 
// OR
var mixed = (a,b) => { (any logic); return a * b };

console.log(mixed(a,b)) 
// 20
16
ответ дан Bart Calixto 16 August 2018 в 00:56
поделиться

Это называется функцией стрелки, частью спецификации ECMAScript 2015 spec ...

var foo = ['a', 'ab', 'abc'];

var bar = foo.map(f => f.length);

console.log(bar); // 1,2,3

Более короткий синтаксис, чем предыдущий:

// < ES6:
var foo = ['a', 'ab', 'abc'];

var bar = foo.map(function (f) {
  return f.length;
});
console.log(bar); // 1,2,3

DEMO

Другая удивительная вещь - лексическая this ... Обычно вы делаете что-то вроде:

function Foo() {
    this.name = name;
    this.count = 0;
    this.startCounting();
}

Foo.prototype.startCounting = function() {
  var self = this;
  setInterval(function () {
    // this is the Window, not Foo {}, as you might expect
    console.log(this); // [object Window]
    // that's why we reassign this to self before setInterval()
    console.log(self.count);
    self.count++;
  },1000)
}

new Foo();

Но это можно было бы переписать стрелкой следующим образом:

function Foo() {
    this.name = name;
    this.count = 0;
    this.startCounting();
}

Foo.prototype.startCounting = function() {
  setInterval(() => {        
    console.log(this); // [object Object]
    console.log(this.count); // 1, 2, 3
    this.count++;
  },1000)
}

new Foo();

DEMO

MDN Подробнее о синтаксисе

Для получения более здесь довольно хороший ответ для , когда использовать функции стрелок.

52
ответ дан Community 16 August 2018 в 00:56
поделиться

Добавление простого примера CRUD со стрелкой

 //Arrow Function
 var customers   = [
   {
     name: 'Dave',
     contact:'9192631770'
   },
   {
     name: 'Sarah',
     contact:'9192631770'
   },
   {
     name: 'Akhil',
     contact:'9928462656' 
   }],

// No Param READ
 getFirstCustomer = () => { 
   console.log(this);
   return customers[0];
 };
  console.log("First Customer "+JSON.stringify(getFirstCustomer())); // 'Dave' 

   //1 Param SEARCH
  getNthCustomer = index=>{
    if( index>customers.length)
    {
     return  "No such thing";
   }
   else{
       return customers[index];
     } 
  };
  console.log("Nth Customer is " +JSON.stringify(getNthCustomer(1))); 

   //2params ADD
  addCustomer = (name, contact)=> customers.push({
     'name': name,
     'contact':contact
    });
  addCustomer('Hitesh','8888813275');
  console.log("Added Customer "+JSON.stringify(customers)); 

  //2 param UPDATE
  updateCustomerName = (index, newName)=>{customers[index].name= newName};
  updateCustomerName(customers.length-1,"HiteshSahu");
  console.log("Updated Customer "+JSON.stringify(customers));

  //1 param DELETE
  removeCustomer = (customerToRemove) => customers.pop(customerToRemove);
  removeCustomer(getFirstCustomer());
  console.log("Removed Customer "+JSON.stringify(customers)); 
3
ответ дан Hitesh Sahu 16 August 2018 в 00:56
поделиться

Как уже говорили все остальные ответы, это часть синтаксиса функции ES2015. Точнее, это не оператор, это токен, который отделяет параметры от тела: ArrowFunction : ArrowParameters => ConciseBody. Например. (params) => { /* body */ }.

1
ответ дан JMM 16 August 2018 в 00:56
поделиться

Это будет «выражение функции стрелки», введенное в ECMAScript 6.

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

Для исторических целей (если страница wiki изменяется позже), это:

Выражение функции со стрелкой имеет более короткий синтаксис по сравнению с функциональными выражениями и лексически связывает это значение. Функции стрелок всегда анонимны.

20
ответ дан Kyle Falconer 16 August 2018 в 00:56
поделиться
  • 1
    ум, включая достаточную информацию, поэтому большинству читателей не нужно разбираться? – djechlin 23 July 2014 в 03:34
  • 2
    Вики, которые я связывал с очень кратко, описывает, что это такое: «Выражение функции стрелки имеет более короткий синтаксис по сравнению с выражением функции и лексически связывает это значение. Функции стрелок всегда анонимны. & Quot; – Kyle Falconer 23 July 2014 в 03:35
  • 3
    Добавление этого в качестве цитаты действительно поможет вашему ответу. – Hanky Panky 23 July 2014 в 03:35

Я читал, это символ Arrow Functions в ES6

, этот

var a2 = a.map(function(s){ return s.length });

с использованием Arrow Function может быть записан как

var a3 = a.map( s => s.length );

MDN Docs

7
ответ дан Mritunjay 16 August 2018 в 00:56
поделиться

Как говорили другие, это новый синтаксис для создания функций.

Однако этот вид функций отличается от обычных:

  • Они связывают this стоимость. Как объяснено , spec , An ArrowFunction не определяет локальные привязки для arguments, super, this или new.target. Любая ссылка на arguments, super, this или new.target в ArrowFunction должна быть разрешена к привязке в лексически закрывающей среде. Обычно это будет функциональная среда сразу входящей функции. Хотя функция ArrowFunction может содержать ссылки на super, функциональный объект, созданный на шаге 4, не превращается в метод, выполняя MakeMethod . Функция ArrowFunction , которая ссылается на super, всегда содержится внутри функции [ Arrow [], а необходимое для реализации super доступное через область который захватывается функциональным объектом ArrowFunction .
  • Они неконструкторы. Это означает, что у них нет внутреннего метода [[Construct]] и, следовательно, он не может быть создан, например.
    var f = a => a;
    f(123);  // 123
    new f(); // TypeError: f is not a constructor
    
10
ответ дан Oriol 16 August 2018 в 00:56
поделиться

Это функции стрелок

Также известны как функции Fat Arrow. Они представляют собой чистый и понятный способ записи функциональных выражений, например. function() {}.

Функции стрелок могут удалить необходимость function, return и {} при определении функций. [1]

var queue        = ['Dave', 'Sarah', 'Sharon'],
    nextCustomer = () => queue[0];

console.log(nextCustomer()); // 'Dave'

Пример: без параметров

var queue        = ['Dave', 'Sarah', 'Sharon'],
    nextCustomer = () => queue[0];

console.log(nextCustomer()); // 'Dave'

Если в одной и той же функции со стрелками необходимо выполнить несколько операторов, в этом примере вам нужно обернуть queue[0] в скобках кромки {}. В этом случае оператор возврата не может быть опущен.

Пример с 1 параметром

var queue       = ['Dave', 'Sarah', 'Sharon'],
    addCustomer = name => { queue.push(name) }

addCustomer('Toby');

console.log(queue); // ['Dave', 'Sarah', 'Sharon', 'Toby']

Вы можете опустить {} из приведенного выше.

Когда имеется один параметр, скобки () вокруг параметра могут быть опущены.

Пример с несколькими параметрами

var addition = (x, y) => x + y

console.log(addition(1, 5)); // 6

Полезный пример

var fruits = [
    {name: 'Apple', price: 2},
    {name: 'Bananna', price: 3},
    {name: 'Pear', price: 1}
];

Если бы мы хотели получить цену каждого плода в одном массиве, в ES5 мы могли бы сделать:

fruits.map(function(fruit) {
    return fruit.price;
}); // [2, 3, 1]

В ES6 с новыми функциями стрелок мы можем сделать это более кратким:

fruits.map(fruit => fruit.price); // [2, 3, 1]

Здесь можно найти дополнительную информацию о функциях стрелок здесь .

Совместимость браузера

  • IE: не поддерживается, но
  • Edge: 12+ (все версии)
  • Firefox: 22 +
  • Chrome: 45 +
  • Safari: 10 +
  • iOS Safari: 10.2 +
  • Android Browser: 56 +

Дополнительную актуальную информацию можно найти в совместимости с браузером здесь

12
ответ дан Toby Mellor 16 August 2018 в 00:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: