Попробуйте authbind:
http://manpages.ubuntu.com/manpages/hardy/man1/authbind.1.html
После установки , вы можете добавить файл с именем номера порта, который вы хотите использовать, в следующей папке: / etc / authbind / byport /
Дайте ему 500 разрешений с помощью chmod и измените право собственности на пользователя, которого вы хотите запустить программу под.
После этого выполните «authbind node ...» в качестве этого пользователя в вашем проекте.
Это функция стрелки. Функции Arrow - это короткий синтаксис, введенный ECMAscript 6, который можно использовать аналогично тому, как вы будете использовать выражения функций. Другими словами, вы можете часто использовать их вместо выражений типа function (foo) {...}
. Но у них есть некоторые важные отличия. Например, они не связывают свои собственные значения this
(см. Ниже для обсуждения).
Функции Arrow являются частью спецификации ECMAscript 6, но не являются частью «нормального» JavaScript, используемого в большинстве браузеров сегодня. Однако они частично поддерживаются в Node v. 4.0 + и во многих браузерах (см. Ниже).
Вы можете прочитать больше в документации Mozilla о функциях стрелок .
Из документации Mozilla:
Выражение функции стрелки (также называемое функцией толстой стрелки) имеет более короткий синтаксис по сравнению с выражениями функции и лексически связывает значение
blockquote>this
(не связывает егоthis
,arguments
,super
илиnew.target
). Функции стрелок всегда анонимны. Эти функциональные выражения лучше всего подходят для функций, отличных от метода, и они не могут использоваться в качестве конструкторов.Примечание о том, как
this
работает в функциях стрелокиз наиболее удобных функций функции стрелки похож на текст выше:
Функция стрелки ... лексически связывает значение
blockquote>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 (без аффилиации).
просто добавить еще один пример того, что лямбда может сделать без использования карты:
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
Это называется функцией стрелки, частью спецификации 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
Другая удивительная вещь - лексическая 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();
Для получения более здесь довольно хороший ответ для , когда использовать функции стрелок.
Добавление простого примера 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));
Как уже говорили все остальные ответы, это часть синтаксиса функции ES2015. Точнее, это не оператор, это токен, который отделяет параметры от тела: ArrowFunction : ArrowParameters => ConciseBody
. Например. (params) => { /* body */ }
.
Это будет «выражение функции стрелки», введенное в ECMAScript 6.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions
Для исторических целей (если страница wiki изменяется позже), это:
Выражение функции со стрелкой имеет более короткий синтаксис по сравнению с функциональными выражениями и лексически связывает это значение. Функции стрелок всегда анонимны.
blockquote>
Я читал, это символ Arrow Functions
в ES6
, этот
var a2 = a.map(function(s){ return s.length });
с использованием Arrow Function
может быть записан как
var a3 = a.map( s => s.length );
Как говорили другие, это новый синтаксис для создания функций.
Однако этот вид функций отличается от обычных:
this
стоимость. Как объяснено , spec , An ArrowFunction не определяет локальные привязки для arguments
, super
, this
или new.target
. Любая ссылка на arguments
, super
, this
или new.target
в ArrowFunction должна быть разрешена к привязке в лексически закрывающей среде. Обычно это будет функциональная среда сразу входящей функции. Хотя функция ArrowFunction может содержать ссылки на super
, функциональный объект, созданный на шаге 4, не превращается в метод, выполняя MakeMethod . Функция ArrowFunction , которая ссылается на super
, всегда содержится внутри функции [ Arrow [], а необходимое для реализации super
доступное через область который захватывается функциональным объектом ArrowFunction . var f = a => a;
f(123); // 123
new f(); // TypeError: f is not a constructor
Также известны как функции 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]
в скобках кромки {}
. В этом случае оператор возврата не может быть опущен.
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]
Здесь можно найти дополнительную информацию о функциях стрелок здесь .
Дополнительную актуальную информацию можно найти в совместимости с браузером здесь