导致NaN的JavaScript整数
我的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()函数,但似乎都不起作用 编辑
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);
}