Javascript 使用Number()设置后,对象属性被视为null,即使它记录为具有值
我遇到了一个奇怪的问题,我无法访问我定义的对象的字段,除非我显式地将该字段设置为数字值 我正试图通过以下方式访问该字段Javascript 使用Number()设置后,对象属性被视为null,即使它记录为具有值,javascript,node.js,Javascript,Node.js,我遇到了一个奇怪的问题,我无法访问我定义的对象的字段,除非我显式地将该字段设置为数字值 我正试图通过以下方式访问该字段 if (userCache[mem.id][action.field]) { 如果未输入该块,则此操作失败。我正在console.log()中在此条件之前输入上述值,它将该值显示为0,这是它以前使用的设置: if (!isNaN(action.fieldvalue)) { valToSet = Number(action.fieldvalue); } else {
if (userCache[mem.id][action.field]) {
如果未输入该块,则此操作失败。我正在console.log()中在此条件之前输入上述值,它将该值显示为0,这是它以前使用的设置:
if (!isNaN(action.fieldvalue)) {
valToSet = Number(action.fieldvalue);
} else {
valToSet = action.fieldvalue;
}
userCache[mem.id][action.field] = valToSet;
其中action.fieldvalue是我想要设置的值,但它是一个字符串。如果我改为使用=0而不是=Number()来设置值,那么我就能够在条件中正确地访问它。这应该有助于您理解该场景:
$ node
> const a = '0';
> const b = Number('0');
> if (a) { console.log("true") } else { console.log("false") }
> if (b) { console.log("true") } else { console.log("false") }
为了澄清,“0”字符串不是伪值,因为它不是空的,而是0数字 似乎不太可能使用
=0
设置它会进入if块。也许有别的东西在改变它<代码>0是错误的,如果(0)
将不会运行,因此当值记录为0时它不会运行。请显示一个。谢谢。我是Js新手,所以我忘记了if(0)返回false。