导致NaN的JavaScript整数

导致NaN的JavaScript整数,javascript,variable-types,Javascript,Variable Types,我的JavaScript基本上如下所示 function a() { b(1); } function b(myNumber) { c(myNumber); } function c(myNumber) { var calculation = 5 * (myNumber - 1); alert(calculation); } 当我调用函数a()时,警报框最后会显示“NaN”。为什么会这样?我在很多地方尝试过使用parseInt()函数,但似乎都不起作用 编辑

我的JavaScript基本上如下所示

function a() {
    b(1);
}

function b(myNumber) {
    c(myNumber);
}

function c(myNumber) {
    var calculation = 5 * (myNumber - 1);
    alert(calculation);
}
当我调用函数
a()
时,警报框最后会显示“NaN”。为什么会这样?我在很多地方尝试过使用
parseInt()
函数,但似乎都不起作用

编辑 完整代码(实际执行的操作,而不是精简的示例):

选择框有一个
onchange
调用
updateTablePagination('myTableId','rowsPerPage')
。ID都是正确的

“开始”和“结束”都是NaN

编辑2 或者,如果我只是执行
警报(页码)
,它是未定义的

简化 即使这样说,
pageNumber
也未定义:

function updateTablePagination(tableId, rowsPerPageSelectId) {
    updateTablePagination(tableId, rowsPerPageSelectId, 1);
}

function updateTablePagination(tableId, rowsPerPageSelectId, pageNumber) {
    alert(pageNumber);
}

您有两个名为
updateTablePagination
的函数。Javascript不支持函数重载。摆脱第一个声明,因为它将被第二个声明覆盖。您可以使用
|
为参数定义默认值

function updateTablePagination(tableId, rowsPerPageSelectId, pageNumber) {
    pageNumber = pageNumber || 1; //Set a default value for pageNumber
    var table = document.getElementById(tableId);
    var rowsPerPageSelect = document.getElementById(rowsPerPageSelectId);
    var rowsPerPage = rowsPerPageSelect.options[rowsPerPageSelect.selectedIndex].text;

    updateTable(table, rowsPerPage, pageNumber);
    //updateTablePageLinks();
}


updateTablePagination(tableId, rowsPerPageSelectId) //Will call the function with pageNumber == 1

问题是您正在覆盖函数。为此:

function a() {
    a(1)
}

function a(x) {
    alert(x);
}
调用
a
将始终调用第二个(覆盖)函数,因此
x
始终未定义。你想要像超载这样的东西。在这种情况下,最好使用
|
操作符作为默认值:

function a(x) {
    var x = x || 1; // x if x is given, otherwise 1
    alert(x);
}

我刚测试过,结果是0。我在Chrome上获得
0
。什么浏览器?你发布的示例没有问题。您需要发布其余代码。我们需要查看实际代码。您在上面发布的代码中没有出现错误。对于我来说,在最新的FF上,它警告0。例如,x将为空或整数。| |如何处理整数比较?
pageNumber | | 1
将返回
pageNumber
,如果已定义,则返回
1
。这里有一个非常简单的JSFIDLE:Dennis对| |的描述几乎是正确的。如果定义了pageNumber,则不返回pageNumber,否则返回nubmer 1。如果值为“truish”,它将返回pageNumber。这意味着如果它是一个整数值,它将不会达到您对值0的期望值。@Rachel G:通常用于布尔值<代码>| |如果是“truthy”,则返回左边的内容,否则返回右边的内容
true
是真的,
false
是假的,所以它适用于布尔人。由于其他一些值也是错误的(例如,
undefined
),执行
undefined | 1
将返回
1
。例如,x将为空或整数。| |如何处理整数比较?@Rachel G:Falsy值是
0
未定义
null
NaN
false
;真理就是一切。谢谢你的帮助。你和pimvdb之间有点纠缠不清。我不得不选择。对不起。@Rachel G:我不介意:)事实上丹尼斯给出了一个更具体的解决方案。
function a(x) {
    var x = x || 1; // x if x is given, otherwise 1
    alert(x);
}