parseInt和vars像字符串一样工作

parseInt and vars acting like strings

本文关键字:一样 工作 vars 字符串 parseInt      更新时间:2023-09-26

所以我试着学习javascript -仍然很基础。

我正在做这样的事情

function add(amount) {
      // number is 9
     var number = parseInt($("#id").attr("number"));
     number = number + amount;
}

这使得数字一个字符串-有什么办法我可以"定义"的东西,所以它知道它是一个整数,所以一切不会泛滥在parseint在我所有的函数?

如果amount值是字符串,则将其添加到int将产生连接的文本。

在添加amount之前运行parseInt或确保您为amount传递int值。

更新:添加前检查参数类型

function add(amount) {
    // number is 9
    var number = parseInt( $("#id").attr("number"), 10 );
    number = number + (typeof amount === "number" ? amount : parseInt( amount, 10 ) );
}

…并且在使用parseInt时一定要指定radix参数。

您只需要使用parseInt一次:当从您有字符串的地方获取值时。之后它就是一个数字,并且一直是一个数字(除非你把它转换回字符串)。

但是总是指定parseInt()的第二个参数:

var number = parseInt($("#id").attr("number"), 10);

否则,它将使用基数8或16,这取决于前缀,这是你通常不想要的!

另外,HTML没有number属性。不要创建自定义属性!在HTML中使用data-number="9",并使用.data('number')访问它。它甚至还有一个优点,即jQuery会自动猜测类型,因此您根本不需要parseInt。

这里有一种不在代码中到处调用parseInt的替代方法:将需要处理的所有内容预处理为整数,并使用jquery(伪代码)中的data api保存它们:

$('.ints').each(function() { $(this).data("int", parseInt($(this).data("number"))); });
因此,你的代码将变成:
function add(amount) {
      // number is 9
     var number = parseInt($("#id").data("int"));
     number = number + amount;
}