使用三元运算符需要两次调用该函数.
var colour = (tryAdventurousColour() != null) ? tryAdventurousColour() : 'black';
Run Code Online (Sandbox Code Playgroud)
可以在1行中完成吗?
编辑:修正语法编辑:像这样但更好
var color =((color = tryAdventurousColour())!= null)?颜色:'黑色';
使用JavaScript的逻辑或运算符:
var colour = tryAdventurousColour() || 'black';
Run Code Online (Sandbox Code Playgroud)
您的功能tryAdventurousColour()将执行一次.如果它返回"truthy"值,那么该colour变量将被赋值给该值,否则colour将为"黑色".这完全适合您的场景,因为它null是一个"虚假"的价值.
更一般地说,如果表达式可以转换为true("truthy"),则表达式a || b返回a,否则返回b.请注意,非零数字,非空字符串和对象都将转换为true.null,undefined,0,""将全部转换为false.(如果我遗漏了某些东西,我肯定会有人纠正我.)