2017-08-06 45 views
0

我试图围绕isBreadwinner功能包裹我的头。为什么不将true传递给(**)函数。为什么收益成员:未定义函数返回undefined与三元运算符

<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> 

回答

1

你错过了returnisBreadWinner功能。

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

如果你想使用return,那么你可能想使用,如果一切都在一行中没有一个块,{}宣称其具有隐含回报的ES6箭头功能跳过。

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

+0

回报(user.salary)?真假;作品,但(user.salary)?返回true:返回false;才不是。 – lft93ryt

+0

@ lft93ryt这是正确的。 –

+0

请抛出一些关于(user.salary)弹出错误的原因?返回true:返回false; – lft93ryt

1

你可能会这样写

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

功能或只需添加return给你的函数