Javascript 三元运算符和赋值:不调用同一函数两次的更好方法

Javascript 三元运算符和赋值:不调用同一函数两次的更好方法,javascript,variable-assignment,ternary-operator,Javascript,Variable Assignment,Ternary Operator,我有以下代码行: const my_v = !isNaN(parseInt(jQuery('#id').val())) ? parseInt(jQuery('#id').val()) : 0; 如您所见,我调用了parseInt函数两次。 我想知道是否有一种方法可以完成一次调用函数的赋值。当然可以使用iLife: (n => !isNaN(n) ? n : 0)(parseInt(jQuery('#id').val())) 但是认真地说,使用局部变量。parseInt()的结果将是一

我有以下代码行:

const my_v = !isNaN(parseInt(jQuery('#id').val())) ? parseInt(jQuery('#id').val()) : 0;
如您所见,我调用了
parseInt
函数两次。
我想知道是否有一种方法可以完成一次调用函数的赋值。

当然可以使用iLife:

 (n => !isNaN(n) ? n : 0)(parseInt(jQuery('#id').val()))

但是认真地说,使用局部变量。

parseInt()的结果将是一个数字或
NaN
,因此您可以使用
|

const my_v = parseInt(jQuery("#id").val()) || 0;
const idValue = parseInt(jQuery('#id').val()), my_v = isNaN(idValue) ? 0 : idValue;

现在,一般来说,我要提醒大家不要使用
parseInt()
,因为(根据设计)它接受像“123hello world”这样的字符串作为有效数字(
123
)。您可以使用
Number()
构造函数或纯一元
+
将字符串强制为数字。如果您不需要小数部分,可以使用
Math.floor()
Math.round()
,并且可以用数字检查是否存在小数部分,如果认为这是错误的话。

如果您已经有一个字符串整数值,您可以只取一个数字或零作为默认值

const my_v = +jQuery('#id').val() || 0;
如果不是,则首先获取值,然后获取整数部分

const my_v = Math.floor(+jQuery('#id').val() || 0);

使用一个
const
可以声明多个变量

const idValue = parseInt(jQuery('#id').val()), my_v = isNaN(idValue) ? 0 : idValue;

在你到达这一行之前分配一次?你说得对。因为我不知道新的javascript规范,所以我在问是否有办法处理1行代码。另外,您可以只使用
const my_v=parseInt(jQuery(“#id”).val())|124; 0
——在这种情况下不需要条件运算符。请注意,您还可以调用
jQuery(“#id”)
val()
函数执行两次。你可以在同一行中执行,但不值得麻烦-使其更难读取。对于
10这样的值,可能会产生不同的结果。a
甚至
10.5
@Rajesh,该值已经是一个数字,然后无需再次解析。是的,我意识到
NaN
也是一个数字;你知道我的意思:)在这种情况下,parseInt正是我需要的。去掉字符并保留数字。@GiacomoM好的,这只是我的标准警告,因为它会让人惊讶