gpt4 book ai didi

javascript - 如何防止在javascript中将值转换为字符串?

转载 作者:行者123 更新时间:2023-11-30 08:14:33 26 4
gpt4 key购买 nike

    var str;
var displayedNum;
for (i in imgURLArray){
str = "<li photonum="+i+">" + "<a>"+ (1+i) + "</a>" + "</li>";
$("ul.selection-list").append(str);

}

我需要在一个循环中执行此操作,但结果是它打印出“11”而不是“2”,因为它在添加之前转换为字符串。

如果我尝试在字符串外部进行加法并将其存储在变量中,我也会遇到同样的问题,它仍然会转换为字符串而不是进行加法。

Number(1+1) 仍然先转换为字符串,然后再转换为数字,所以结果是 11。

最佳答案

使用括号:

var str = "foobar" + (1+i) + "other stuff";

I have the same problem if I try to do the addition outside of the string and store in a variable as well, it still converts to string instead of doing addition.

不应该。我的猜测是你在那里也做错了什么。

更新:您似乎正在将 i 转换为您未发布的代码中某处的字符串。

更新 2: Don't use for..in to loop over an array .如果它真的是一个数组,请使用普通的 for 循环:

for(var i = 0, l = imgURLArray.length; i < l; i++)

但是如果它是一个对象:

for...in 总是将 i 设置为字符串(因为它遍历对象的属性,这些属性并不总是整数)。这意味着您必须先转换 i 才能进行任何添加:

... + (1 + (+i)) + ...

更新 3:

您不必总是使用这种“显式”for 循环。比如可以倒序遍历数组,这样头部就变短了:

for (var i = imgURLArray.length; i--; ) {
str = "<li photonum="+i+">" + "<a>"+ (1+i) + "</a>" + "</li>";
$("ul.selection-list").prepend(str);
}

关于javascript - 如何防止在javascript中将值转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com