我不确定如何正确地说出这个问题的标题,但是直接进入它,
使用? : 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;
会哈希返回值吗?还是未定义?
提前感谢您,如果我需要发布更多信息,请告诉我。
答案 0 :(得分:2)
语法:
var a = (b) ? c : d;
如果a
评估为真值,则c
等于b
,d
如果b
评估为真值,则||
。如果我理解正确,您希望将变量设置为函数的返回值,如果该函数失败,请将其设置为某个默认值。为此,请使用var a = b() || 'error occurred!';
:
b()
在上面一行中,如果a
评估为某些内容,error occurred!
将获得b()
的值。如果b()
评估为真值,则会得到{{1}}的返回值。
答案 1 :(得分:1)
这将是未定义的。只要函数返回时返回falsey值,就可以使用or(||
)运算符:
var hash = self.getHashFromMasterRecords(d[0]) ?? false;
虽然,如果这是一个具体的例子,上面的代码几乎没有价值,因为你只需要存储函数的结果就已经有了假值。