Javascript:为函数调用定义变量的最有效方法,或者对变量是否为null?

时间:2011-09-23 03:32:46

标签: javascript

使用三元运算符需要两次调用函数。

var colour = (tryAdventurousColour() != null) ? tryAdventurousColour() : 'black';

可以在一行中完成吗?

编辑:修正了语法 编辑:像这样但更好

var color =((color = tryAdventurousColour())!= null)?颜色:'黑色';

2 个答案:

答案 0 :(得分:5)

使用JavaScript的逻辑或运算符:

var colour = tryAdventurousColour() || 'black';

您的函数tryAdventurousColour()将执行一次。如果它返回“truthy”值,那么colour变量将分配给该值,否则colour将为“黑色”。这完全适合您的场景,因为null是一个“虚假”值。

更一般地说,表达式a || b如果可以转换为true(“truthy”)则返回a,否则返回b。请注意,非零数字,非空字符串和对象都将转换为true。 null,undefined,0,“”将全部转换为false。 (我相信如果我遗漏了某些东西,有人会纠正我。)

答案 1 :(得分:-1)

 var colour = (tryAdventurousColour()) ? tryAdventurousColour() : 'black';