0

我无法理解 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

4 回答 4

1

你还没有初始化result任何东西,所以它将是undefined.

因为您正试图将一个字符串连接到undefined,所以它将toString() undefined得到字符串"undefined",并将开始连接到该字符串。

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

于 2012-09-05T05:38:58.627 回答
1

也许,由于您只是在每次循环中附加,您可能希望最初将设置为.resultundefined

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

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

http:localhost/File/Modules/FileManager/Library/
于 2012-09-05T05:39:08.640 回答
1

你必须给结果一个初始值:

var result = '';

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

var x;
x += 'foo';  // x === 'undefinedfoo';
于 2012-09-05T05:39:32.403 回答
0

宣布

var result = "";

然后它会正常工作:)

于 2012-09-05T06:11:49.370 回答