jjzjj

javascript - 检测大型 JS 程序中的任何变量何时设置为 NaN

我有一个庞大、困惑的JS代码库。有时,在使用应用程序时,变量会设置为NaN。因为x=2+NaN导致x被设置为NaN,所以NaN会像病毒一样传播。在某个时候,在它传播很远之后,用户会注意到到处都是NaN,而且狗屎通常不再起作用了。从这种状态开始,我很难回溯并确定NaN的来源(很可能有多个来源)。NaN错误也不容易重现。尽管有数百人观察并向我报告,但没有人能告诉我导致NaN出现的一组步骤。也许这是一种罕见的比赛条件或其他什么。但这绝对是罕见的,而且来源不明。我该如何修复这个错误?有什么想法吗?我想到的两个愚蠢的想法,可能不可行:编写某种预处理器,在每次使用任何变量之前插入isNaN检查并记

javascript - 当 a 为负数且 b 为非整数时,为什么 Math.pow(a, b) 为 NaN?

这个问题在这里已经有了答案:Math.powwithnegativenumbersandnon-integerpowers(2个答案)关闭8年前。我观察到以下Javascript行为:>Math.pow(4,2)16>Math.pow(4,2.1)18.37917367995256>Math.pow(4,0.5)2>Math.pow(-4,2)16>Math.pow(-4,2.1)NaN>Math.pow(-4,0.5)NaN为什么给一个负数和一个非整数但有理数,使Math.pow返回NaN?例如,为什么Math.pow(4,0.5)不是NaN而是Math.pow(4,-0.5)是Na

javascript - typeof var 显示预期的数字类型后出现意外的 NaN 输出

在EloquentJavascript第4章的练习中得到了一个意想不到的NaN,但这个错误还不够明显,我没有注意到它。有人介意看一下并指出我的错误吗?/*Writearangefunctionthattakestwoarguments,startandend,andreturnsanarraycontainingallthenumbersfromstartupto(andincluding)end.*/varnumRng=[];functionrange(start,end){//varnumRng=[];cntr=(end-start);for(i=0;i这里是Firebug输出,在

javascript - 如何使用 jQuery each 函数检查 NaN 的数组值?

我有这些从数据库中获取数据的HTML代码。我将一个数组设置为HTML输入。HTML代码CategoryJanuaryFebruaryFetchArray("select*fromtable");if(count($sql)>0){foreach($sqlas$row){$i=0;if($i==0){?>"placeholder=""readonly>"placeholder=""readonly>"placeholder=""readonly>"placeholder=""readonly>"placeholder=""readonly>Totaljan1[]的值在console.lo

javascript - 当我们可以抛出 TypeErrors 时,为什么我们需要 NaN 值?

为什么编程语言有一个NaN值?Math.floor('string');//-->NaN为什么不直接抛出TypeError呢?TypeError:Expectednumberinsteadofstring问题被标记为javascript和language-agnostic因为JavaScript是我最熟悉的语言,但我知道这也适用于其他语言。 最佳答案 在类型化语言中,您必须将数字放入数字变量中,即使您没有数字也是如此。你把NaN(这就是为什么typeofNaN在JavaScript中是“number”的原因)。当您没有更好的对象引用

javascript - 连接对象属性的值返回 NaN (Javascript)

我有一个具有多个属性的对象,每个属性都有一个字符串值。当我尝试连接每个属性的值时,它返回NaN。varurlProps={searchTerm:"searchSTUFF",baseURL:"https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exsentences=1&exlimit=10&exintro=&explaintext=&titles=%20&generator=search&gsrsearch=",tailURL:"&rawcontinue=&callback=?",final

JavaScript:什么是 NaN、Object 或 primitive?

什么是NaN、Object或primitive?NaN-不是数字 最佳答案 这是一个原始人。您可以通过多种方式进行检查:typeofNaN给出“数字”而不是“对象”。添加一个属性,它消失了。NaN.foo="嗨";console.log(NaN.foo)//未定义NaNinstanceofNumber给出false(但我们知道它是一个数字,所以它必须是原始类型)。将NaN作为对象实际上没有意义,因为像0/0这样的表达式需要产生NaN,而数学运算总是产生原语.将NaN作为对象也意味着它不能充当虚假值,而在某些情况下它确实如此。

javascript - 自增运算符返回 NaN

我正在尝试使用++运算符递增一个变量,但我一直得到NaN结果,我不确定为什么。这是我的代码:varwordCounts={};varx=0varcompare="grooveisintheheart";varwords=compare.split(/\b/);for(vari=1;i2){wordCounts["_"+words[i]]++;}}alert(wordCounts.toSource()); 最佳答案 wordCounts["_"+words[i]]的值最初是undefined所以当你++它时,它给你NaN。只需将您的代

javascript - 输出中出现未定义/NaN 错误

这是我在stackoverflow上的第一篇文章,我在以下代码中遇到错误,在firefox的检查元素/JS控制台中没有显示错误,但由于某种原因计算后的输出显示未定义/NaN错误。来自用户的输入在Float中被解析。代码:functioncosttoShip(){//getinputvarweight=parseFloat(document.getElementById("weight")).value;varmsg;varcost;varsubtotal;//calculationif(weight>=0.00&&weight=151.00&&weight=301.00&&weight

javascript - NaN 乘法

我正在尝试这段代码,但我得到的是NaNa=unidade.val();b=unitario.val();//alert(a);5//alert(b);50,00$(total).val(a*b);//NaN为什么?因为是int*float吗? 最佳答案 在乘以val之前,您必须解析字符串总是返回一个字符串和"50,00"无法自动转换为数字。parseFloat("50,1")给你50.如果此处的逗号是小数点分隔符,则必须将其替换为点。所以你可能需要a=parseFloat(unidade.val().replace(",",".")