因此,我正在开发一个游戏,所以我希望它能够使如果任何变量是“ NaN”或未定义,则variableThatTriggeredThis
将设置为0。
到目前为止我还没有尝试过任何东西,我也不知道如何解决它。
if(example == NaN || foo == NaN || bar == NaN) {
variableThatTriggeredThis = 0;
}
我还想问问是否有一种方法可以选择代码中的每个变量,例如多个变量,就像var(one,two)==“ 100”。
答案 0 :(得分:3)
您可以直接检查变量。 NaN
或undefined
的值为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”循环。