是否有最佳方法可以阻止legend([h_A(1), h_Z(1)], {'a', 'z'})
?我有数字输入字段,每当我清除该字段时,我得到NaN
。
NaN
现在我的渲染中有_amount: function(e) {
var value = parseInt(e.target.value);
var newValue = (value === NaN ? 0 : value); // Thought this could work
},
<input type="number" value={this.state.amount} onChange={this_amount} />
。事情是,当我清除输入字段时,金额状态为400 - this.state.amount
。怎么预防这个?有可能当我清除该字段时我得到零吗?假设我输入null
然后清除字段,弹出3
。
由于
答案 0 :(得分:8)
NaN
永远不等于NaN
本身,因此依赖于Number.isNaN(value)
方法。
_amount: function(e) {
var value = parseInt(e.target.value);
var newValue = (isNaN(value) ? 0 : value);
//OR sorthand as `NaN` is falsey
var value = parseInt(e.target.value) || 0;
}
isNaN
函数与JavaScript中的所有其他可能值不同,不可能依赖等于运算符(
==
和===
)来确定值是否为NaN
,因为两者都是NaN == NaN
和NaN === NaN
评估为false。因此,isNaN
函数的必要性。[Ref]
答案 1 :(得分:0)
我找到的最短路是
var number = (yourVariable || 0)
因为NaN
是一个假名值,只要yourVariable
为NaN,就会返回0。
检查数字是否为NaN的方法是使用isNaN
函数。
isNaN(yourVariable); // Returns true is yourVariable is NaN
旁注:
上述方法也可用于多个问题。例如:从数组中获取值(可能不存在)并从2d数组中获取值。
从数组中获取值:
yourArray[i] || 0
i
是您要访问的ID
从2D数组中获取值:
(yourArray[i] || [])[j] || 0
i
和j
是数组中元素的位置