Поиск…


Вступление

С узлом 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 в браузере.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow