提供时,函数参数为“Null或Undefined”

时间:2014-06-25 14:48:51

标签: javascript

我有一个带两个参数的函数,但第二个参数因任何原因未定义。我似乎无法弄明白为什么。

function foo(sometext, i) {
    alert(sometext);
    alert(i);
}

function bar() {
    for(var i = 0; i < 1; i++) {
        foo("text", i);
    }
}

当我在JSFiddle上运行它时,它似乎工作。当我在本地服务器上运行类似的代码时,我得到错误,说我在foo()中未定义。我不知道为什么,因为我正在为它传递一个价值。我使用的是WAS8.0服务器和IE9。

jsfiddle

编辑:添加真实代码。

function showResult(data) {
        $('#searchResults').empty();
        for(var i = 0; i < data.length; i++) {
            $('#searchResults').append(htmlifyResultsRow(data[i]), i).trigger('create');
        }
 }

function htmlifyResultsRow(dataRow, i) {
    alert(i);
    //Undefined already. I call i.toString() in places, which is where the error shows it self
}

showResults()函数由其他一些代码调用。

2 个答案:

答案 0 :(得分:2)

仔细看看这个表达式:

$('#searchResults').append(htmlifyResultsRow(data[i]), i)

您将i传递给.append(),而不是传递给htmlifyResultsRow()。这就是您i函数中undefinedhtmlifyResultsRow的原因,因为它从未首先传递i的值。

您可能希望做的是:

$('#searchResults').append(htmlifyResultsRow(data[i], i))

答案 1 :(得分:1)

这就是问题:

 $('#searchResults').append(htmlifyResultsRow(data[i]), i)

它应该是:

  $('#searchResults').append(htmlifyResultsRow(data[i], i))