Javascript 如何获取触发if函数的变量?
因此,我正在开发一个游戏,我希望它能够使任何变量为“NaN”或未定义,Javascript 如何获取触发if函数的变量?,javascript,Javascript,因此,我正在开发一个游戏,我希望它能够使任何变量为“NaN”或未定义,variableThatTriggeredThis将设置为0 到目前为止,我没有尝试过任何东西,我不知道如何修复它 if(示例==NaN | | foo==NaN | | bar==NaN){ 触发此参数的变量=0; } 我还想问,是否有一种方法可以选择代码中的每个变量,或者例如多个变量,就像var(1,2)=“100”。您可以直接检查变量NaN或undefined的值为false 然后使用逻辑或| | expr1 | |
variableThatTriggeredThis
将设置为0
到目前为止,我没有尝试过任何东西,我不知道如何修复它
if(示例==NaN | | foo==NaN | | bar==NaN){
触发此参数的变量=0;
}
我还想问,是否有一种方法可以选择代码中的每个变量,或者例如多个变量,就像var(1,2)=“100”。您可以直接检查变量
NaN
或undefined
的值为false
然后使用逻辑或| |
expr1 | | expr2
如果expr1
可以转换为true,则返回expr1
;否则,返回expr2
例如:
example = example || 0 ;
foo = foo || 0 ;
bar = bar || 0 ;
你可以用几种方法写这个。这里有一个使用数组分解的选项:
设a=10;
设b=0/0;//楠
设c;//未定义
const undefinedOrNaNCheck=value=>(value==undefined | | Number.isNaN(value))?0:数值;
[a,b,c]=[a,b,c].映射(未定义检查);
console.log([a,b,c])代码>将变量强制为数字(默认为0):
example=isNaN(示例)?0:示例*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;
});
这是一个例子
如果您支持较旧版本的javascript(例如,较旧的浏览器),则需要使用“var”而不是“const”,并使用“for”循环而不是上面显示的“forEach”循环。使用单独的If
sexample=example|0代码>可能会执行您想要的操作。对其他变量重复此操作。警告:NaN!==南
!!!。。。请改为使用。@ibrahimmahrir更好的方法是使用Number.isNaN
。我建议使用typeof value==='undefined'
或value===void 0
作为未定义的检查,因为undefined
是一个有效的变量名,所以它可以被隐藏或覆盖。。。回答得好,但这似乎有些过分undefined
自ES5以来一直不可写。没错,但它仍然可以用作变量名,隐藏全局属性:let undefined='Not really undefined…';console.log(未定义)
@Eperou,我提供了一把工作小提琴。如果您正在寻求更多帮助,请具体说明哪些不适合您。