设置变量以返回函数值或false

时间:2014-12-15 14:24:41

标签: javascript

我不确定如何正确地说出这个问题的标题,但是直接进入它,

使用? : operator我设置了一个JavaScript变量和if语句,如下所示:

var test = callsAFunction ? test : false;

如果我这样做,那么测试函数会在这里返回吗?或者它是否会被定义,因为它"技术上"尚未设定?

我尝试做的是将变量设置为它返回的数据并通过函数运行,或者将其设置为布尔值false,以便将其作为错误处理我的布尔检查。我认为这种方法是最好的,但我遇到了决定如何解决这个问题的问题。以下是我的代码片段:

var hash = self.getHashFromMasterRecords(d[0]);

if(hash === false){
                done("Can't find master record hash", self.requestData, self);
            }

显然,它需要将false作为布尔值转换才能作为错误传递。我想这样做,而不必为此序列调用该函数超过1次。

所以如果我做var hash = self.getHashFromMasterRecords(d[0]) ? hash : flase;会哈希返回值吗?还是未定义?

提前感谢您,如果我需要发布更多信息,请告诉我。

2 个答案:

答案 0 :(得分:2)

语法:

var a = (b) ? c : d;

如果a评估为真值,则c等于bd如果b评估为真值,则||。如果我理解正确,您希望将变量设置为函数的返回值,如果该函数失败,请将其设置为某个默认值。为此,请使用var a = b() || 'error occurred!';

b()

在上面一行中,如果a评估为某些内容,error occurred!将获得b()的值。如果b()评估为真值,则会得到{{1}}的返回值。

答案 1 :(得分:1)

这将是未定义的。只要函数返回时返回falsey值,就可以使用or(||)运算符:

var hash = self.getHashFromMasterRecords(d[0]) ?? false;

虽然,如果这是一个具体的例子,上面的代码几乎没有价值,因为你只需要存储函数的结果就已经有了假值。