2017-08-06 2 views
0

Ich versuche, meinen Kopf um die isBreadwinner Funktion zu wickeln. Warum geht true nicht in die Funktion (**) über. Warum ist Earning Mitglied: undefinedFunktion kehrt undefiniert mit ternären Operator

<script> 
    "use strict" 

    //creating a user object 
    let user = { 
     name : "Stackoverflow Developer", 
     age : 23 
    }; 

    // appending properties to the user object 
    user.location = "NYC"; 
    user["occupation"] = "JavaScript Developer"; 
    user["salary"] = 10; 

    //(**) 
    let isBreadwinner =() => { 
     (user.salary) ? true : false; 
    }; 

    console.log("asd" + isBreadwinner()); 
    user["Earning member"] = isBreadwinner(); 

    // printing the object 
    console.dir("User dir object" + JSON.stringify(user)); 
    console.dir(user); //Earning member:undefined 
</script> 

Antwort

1

Sie die return in Ihrer isBreadWinner Funktion fehlen.

let isBreadwinner = function() { 
    return (user.salary) ? true : false; 
}; 

Wenn Sie ein return mit überspringen wollen, dann können Sie eine ES6 Pfeil Funktion verwenden möchten, die implizite Rendite hat, wenn alles in einer Zeile ohne Block deklariert wird, {}.

let isBreadwinner =() => (user.salary) ? true : false;

+0

return (user.salary)? wahr falsch; funktioniert aber (user.salary)? Rückgabe wahr: Rückgabe false; nicht. – lft93ryt

+0

@ lft93ryt Das ist richtig. –

+0

Bitte werfen Sie einen Blick auf den Grund, warum der Fehler in (user.salary) auftaucht? Rückgabe wahr: Rückgabe false; – lft93ryt

1

Sie die Funktion wie diese

let isBreadwinner =() => (user.salary) ? true : false; 

schreiben kann oder fügen Sie einfach return an Ihre Funktion