Node.js
Node.js v6 Новые возможности и улучшения
Поиск…
Вступление
С узлом 6 становится новой версией узла LTS. Мы можем увидеть ряд улучшений в языке через новые стандарты ES6. Мы рассмотрим некоторые новые функции и примеры того, как их реализовать.
Параметры функции по умолчанию
function addTwo(a, b = 2) {
return a + b;
}
addTwo(3) // Returns the result 5
С добавлением параметров функции по умолчанию вы можете сделать аргументы опционными и по умолчанию использовать их по вашему выбору.
Параметры останова
function argumentLength(...args) {
return args.length;
}
argumentLength(5) // returns 1
argumentLength(5, 3) //returns 2
argumentLength(5, 3, 6) //returns 3
Предваряя последний аргумент вашей функции с помощью ...
все аргументы, переданные функции, считываются как массив. В этом примере мы получаем проход в нескольких аргументах и получаем длину массива, созданного из этих аргументов.
Оператор распространения
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);
Синтаксис распространения позволяет выражать выражение в местах, где ожидаются несколько аргументов (для вызовов функций) или нескольких элементов (для литералов массива) или нескольких переменных. Как и остальные параметры, просто представьте свой массив с помощью ...
Функции стрелки
Функция Arrow - это новый способ определения функции в ECMAScript 6.
// traditional way of declaring and defining function
var sum = function(a,b)
{
return a+b;
}
// Arrow Function
let sum = (a, b)=> a+b;
//Function defination using multiple lines
let checkIfEven = (a) => {
if( a % 2 == 0 )
return true;
else
return false;
}
«это» в функции стрелки
это в функции относится к экземпляру объекта, используемому для вызова этой функции, но это в функции стрелок равно этому функции, в которой определена функция стрелки.
Давайте разобраться с диаграммой
Понимание использования примеров.
var normalFn = function(){
console.log(this) // refers to global/window object.
}
var arrowFn = () => console.log(this); // refers to window or global object as function is defined in scope of global/window object
var service = {
constructorFn : function(){
console.log(this); // refers to service as service object used to call method.
var nestedFn = function(){
console.log(this); // refers window or global object because no instance object was used to call this method.
}
nestedFn();
},
arrowFn : function(){
console.log(this); // refers to service as service object was used to call method.
let fn = () => console.log(this); // refers to service object as arrow function defined in function which is called using instance object.
fn();
}
}
// calling defined functions
constructorFn();
arrowFn();
service.constructorFn();
service.arrowFn();
В функции стрелок это лексическая область действия, которая является областью функции, в которой определена функция стрелки.
Первый пример - традиционный способ определения функций, и, следовательно, это относится к глобальному / оконному объекту.
Во втором примере это используется внутри функции стрелки, следовательно, это относится к области, где она определена (которая является окном или глобальным объектом). В третьем примере это служебный объект, так как объект службы используется для вызова функции.
В четвертом примере функция стрелки определена и вызывается из функции, область действия которой является сервисом , поэтому она печатает служебный объект.
Примечание: глобальный объект печатается в объекте Node.Js и Windows в браузере.