JavaScript:将字符串/数字转换为数字或null,返回0表示0?

JavaScript:将字符串/数字转换为数字或null,返回0表示0?,javascript,Javascript,在我的JavaScript中,我目前有一个很好的表达式: var b = { items: +a || null }; 如果a是字符串或大于0的数字,则将b.items设置为数字;如果a为null/未定义,则设置为null 但是,如果a为0,它也会返回null。现在我想更改它,使其在a为0时返回0。(这似乎是处理真实数据的正确方法:如果它是零,我们想知道它是零,如果它不存在,我们也想知道。) 我已经看过并尝试过这两种: items: 1/a ? +a: null items: isNaN

在我的JavaScript中,我目前有一个很好的表达式:

var b = {
   items: +a || null
};
如果
a
是字符串或大于0的数字,则将
b.items
设置为数字;如果
a
null
/
未定义,则设置为
null

但是,如果
a
为0,它也会返回
null
。现在我想更改它,使其在
a
为0时返回0。(这似乎是处理真实数据的正确方法:如果它是零,我们想知道它是零,如果它不存在,我们也想知道。)

我已经看过并尝试过这两种:

items: 1/a ? +a: null
items: isNaN(a) ? null : +a
但如果
a
为空,则这两个函数都返回0。它们应该返回null

如果
a
为0,是否有方法返回0;如果未定义,是否有方法返回
null

更新:下面是表达式需要执行的所有操作的摘要:

"72" -> 72
"0" -> 0
1 -> 1
0 -> 0
null -> null
undefined -> null

您可以在三元运算符中检查
a
的类型

var b = {
    items: typeof (+a) == 'number' ? +a : null
};
演示:

var b={
items:typeof(+“0”)=“number”?+“0”:空
};

警报(b.项目)您可以专门测试空值和未定义值

var b = {
    items: ('undefined' === typeof a || null === a) ? null : +a
};
试试这个

var b = {
   items: +a ||(a==0?0:null)
};

这也应该起作用:

var b = {
   items: a != null? +a : null
};

基于

我也想转换字符串,不过。。。包括字符串
“0”
@Richard,它返回null,它应该返回什么呢?它会返回吗?我得到
Uncaught ReferenceError:a未定义
(在控制台中测试)。@Richard,这只表明您在测试之前没有定义
a
。对我来说,只需添加
var a=undefined