Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Number()设置后,对象属性被视为null,即使它记录为具有值_Javascript_Node.js - Fatal编程技术网

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。