如何获取触发if函数的变量?

时间:2019-11-09 22:12:47

标签: javascript

因此,我正在开发一个游戏,所以我希望它能够使如果任何变量是“ NaN”或未定义,则variableThatTriggeredThis将设置为0。

到目前为止我还没有尝试过任何东西,我也不知道如何解决它。

if(example == NaN || foo == NaN || bar == NaN) {
    variableThatTriggeredThis = 0;
}

我还想问问是否有一种方法可以选择代码中的每个变量,例如多个变量,就像var(one,two)==“ 100”。

3 个答案:

答案 0 :(得分:3)

您可以直接检查变量。 NaNundefined的值为false。

然后使用逻辑或||

  

expr1 || expr2如果expr1可以转换为true,则返回expr1;否则,返回expr2

示例:

example = example || 0 ;
foo = foo || 0 ; 
bar = bar || 0 ; 

答案 1 :(得分:1)

您可以通过多种方式编写此代码。这是使用数组解构的一种选择:

let a = 10;
let b = 0/0; // NaN
let c; // undefined

const undefinedOrNaNCheck = value => (value === undefined || Number.isNaN(value)) ? 0 : value;
[a, b, c] = [a, b, c].map(undefinedOrNaNCheck);


console.log([a, b, c]);

答案 2 :(得分:0)

将变量强制为数字(默认为0):

example = isNaN(example) ? 0 : example * 1;

要处理多个变量,一种方法是创建一个父对象:

const scores = {};
scores.example = 10;
scores.foo = undefined;
scores.bar = 'not a number';

...允许这样的迭代:


Object.keys(scores).forEach(function(key) {   
  scores[key] = isNaN(scores[key]) ? 0 : scores[key] * 1;
});

这里是working fiddle

如果您支持较旧版本的javascript(例如,较旧的浏览器),则需要使用“ var”而不是“ const”,并使用“ for”循环而不是上面显示的“ forEach”循环。