Ricerca…


introduzione

Con il nodo 6 diventa la nuova versione LTS del nodo. Possiamo vedere una serie di miglioramenti alla lingua attraverso i nuovi standard ES6. Passeremo attraverso alcune delle nuove funzionalità introdotte e alcuni esempi su come implementarle.

Parametri funzione predefiniti

function addTwo(a, b = 2) {
    return a + b;
}

addTwo(3) // Returns the result 5

Con l'aggiunta di parametri di funzione predefiniti ora puoi rendere opzionali gli argomenti e impostarli come predefiniti su un valore a tua scelta.

Parametri di riposo

function argumentLength(...args) {
    return args.length;
}

argumentLength(5) // returns 1
argumentLength(5, 3) //returns 2
argumentLength(5, 3, 6) //returns 3

Prefacendo l'ultimo argomento della tua funzione con ... tutti gli argomenti passati alla funzione vengono letti come una matrice. In questo esempio otteniamo pass in più argomenti e otteniamo la lunghezza della matrice creata da quegli argomenti.

Spread Operator

function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);

La sintassi di diffusione consente di espandere un'espressione in luoghi in cui sono previsti più argomenti (per chiamate di funzione) o più elementi (per letterali di array) o più variabili. Proprio come i parametri di riposo, semplicemente prefigurano il tuo array con ...

Funzioni della freccia

La funzione Arrow è il nuovo modo di definire una funzione in 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;
}

"questo" in Arrow Function

questa funzione si riferisce ad oggetto istanza utilizzato per chiamare tale funzione ma questa funzione freccia è uguale a questo di funzione in cui è definita la funzione freccia.

Capiamo usando il diagramma ambito lessicale di questa funzione nella freccia

Comprensione con esempi.

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();

Nella funzione freccia, questo è lo scope lessicale che è l'ambito della funzione in cui è definita la funzione freccia.
Il primo esempio è il modo tradizionale di definire le funzioni e quindi si riferisce all'oggetto globale / finestra .
Nel secondo esempio questo è usato all'interno della funzione freccia, quindi questo si riferisce all'ambito in cui è definito (che è Windows o oggetto globale). Nel terzo esempio si tratta di oggetto di servizio poiché l'oggetto di servizio viene utilizzato per chiamare la funzione.
Nel quarto esempio, la funzione freccia è definita e chiamata dalla funzione il cui ambito è servizio , quindi stampa oggetto servizio .

Nota: - l'oggetto globale viene stampato in Node.Js e l'oggetto Windows nel browser.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow