For循环给出意想不到的结果

时间:2012-09-05 05:37:04

标签: jquery html

我无法理解for循环的行为。 jquery的:

 $('#btnTest').on("click", function () {

            var thumbUrl = "http:localhost/File/Modules/FileManager/Library/1041323042_12.jpg";
            var arrurl = thumbUrl.split("/");
            var i;
            var result;
            for (i = 0; i < arrurl.length - 1; i++) {
                result += arrurl[i] + '/';
            }
            alert(result);
 });

和html:

<input type="button" class="ThumbLink" value="Test" id="btnTest"/>

alert给出了结果:

undefinedhttp:localhost/File/Modules/FileManager/Library/

这个undefined来自哪里。我在for循环中的错误是什么?谢谢。

我的jsfiddle:

jsfiddle

4 个答案:

答案 0 :(得分:1)

您尚未将result初始化为任何内容,因此它将为undefined

因为您尝试将字符串连接到undefined,它将toString() undefined,获取字符串"undefined",并将开始连接到该字符串。

您可以通过将result初始化为空字符串("")来停止此操作。

答案 1 :(得分:1)

也许,因为每次循环时你只是追加result,你可能想要将它最初设置为其他而不是{{ 1}}。

undefined

对jsfiddle链接进行更改会产生正确的输出:

:
var result = "";
for (i = 0; i < arrurl.length - 1; i++) {
    result += arrurl[i] + '/';
}
alert(result);
:

答案 2 :(得分:1)

您必须为结果提供初始值:

var result = '';

否则在将url连接到它之前结果是未定义的:

var x;
x += 'foo';  // x === 'undefinedfoo';

答案 3 :(得分:0)

声明

var result = "";

然后它会正常工作:)