三元运算符和赋值:不调用同一个函数两次的更好方法
Ternary operator and assignment: better way for not calling the same function twice
我有这个代码行:
const my_v = !isNaN(parseInt(jQuery('#id').val())) ? parseInt(jQuery('#id').val()) : 0;
如您所见,我调用了 parseInt
函数两次。
我想知道是否有一种方法可以完成一次调用函数的赋值。
确定使用 IIFE:
(n => !isNaN(n) ? n : 0)(parseInt(jQuery('#id').val()))
但说真的,请使用局部变量。
parseInt()
的结果将是数字或 NaN
,因此您可以使用 ||
:
const my_v = parseInt(jQuery("#id").val()) || 0;
现在,一般来说,我会警告任何人不要使用 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;
我有这个代码行:
const my_v = !isNaN(parseInt(jQuery('#id').val())) ? parseInt(jQuery('#id').val()) : 0;
如您所见,我调用了 parseInt
函数两次。
我想知道是否有一种方法可以完成一次调用函数的赋值。
确定使用 IIFE:
(n => !isNaN(n) ? n : 0)(parseInt(jQuery('#id').val()))
但说真的,请使用局部变量。
parseInt()
的结果将是数字或 NaN
,因此您可以使用 ||
:
const my_v = parseInt(jQuery("#id").val()) || 0;
现在,一般来说,我会警告任何人不要使用 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;