我有一个庞大、困惑的JS代码库。有时,在使用应用程序时,变量会设置为NaN。因为x=2+NaN导致x被设置为NaN,所以NaN会像病毒一样传播。在某个时候,在它传播很远之后,用户会注意到到处都是NaN,而且狗屎通常不再起作用了。从这种状态开始,我很难回溯并确定NaN的来源(很可能有多个来源)。NaN错误也不容易重现。尽管有数百人观察并向我报告,但没有人能告诉我导致NaN出现的一组步骤。也许这是一种罕见的比赛条件或其他什么。但这绝对是罕见的,而且来源不明。我该如何修复这个错误?有什么想法吗?我想到的两个愚蠢的想法,可能不可行:编写某种预处理器,在每次使用任何变量之前插入isNaN检查并记
一些变量可以在Javascript执行期间被“优化掉”。因此,此类变量的值在调试时不可用于检查(Userdocumentation)。变量View显示(优化掉)消息,如果尝试评估变量,控制台会抛出以下错误:Error:variablehasbeenoptimizedout有什么方法可以在Firefox中强制评估此类变量或禁用此优化? 最佳答案 以防止这种优化的方式使用变量。functionNOP(){}//thenintheoptimisedcodeNOP(myvar);//debugginghereshouldnowshow`my
我正在使用VisualStudioCode调试一些前端javascript(用于Wordpress插件)。我在正确配置launch.json文件时遇到问题。我可以手动启动chrome,然后在事后附加到它(使用附加请求),在这种情况下,javascript断点可以正常工作。如果我从vscode中启动chrome(使用启动请求),它会连接(我看到控制台输出)但我没有触发断点。我假设我的launch.json文件中有一些设置不正确。{"version":"0.2.0","configurations":[{"name":"LaunchSignupForm","type":"chrome","
我在Chrome中随机打开了一个互联网页面。我使用启用的javascript打开它,因为我需要执行一些脚本。从某个时刻开始,我想停止脚本执行,因此不应运行任何计时器或事件处理程序。当然,使用无限循环是不行的,因为我希望页面能够响应。我怎样才能做到这一点?下面的代码部分完成了我需要的document.body.outerHTML=document.body.outerHTMLfor(t=setTimeout(()=>{});t;--t)clearTimeout(t)但是:document上的事件监听器和ajax回调将继续存在这会导致解析html,所以一些无效的标记可以通过解析来改变此外,
我想摆脱一直使用console.log并更频繁地使用Chrome开发者调试工具。我觉得这很好Howtostopusingconsole.log()andstartusingyourbrowser’sdebugger关于一般调试(设置断点、逐行执行等)但是当我尝试在现实生活中使用它时——这意味着在我正在处理的vue(nuxt)应用程序中使用它——我无法让它工作。我的所有文件都组合成更复杂的javascript文件,我无法对其进行调试。然后我找到了这个帖子:Debugging.vuecomponentinChrome我认为这会阐明这件事,但不幸的是我不知道该怎么做。我添加了这个:confi
是否有等效于javascript的phpdie()函数停止所有javascript(包括ajax请求的future回调、超时等...)运行?(注意:我不能在调试器中使用断点,因为错误在ie8中,并且调试器会阻止您在断点处向上/向下滚动页面;以便能够看到错误发生在哪个点我需要能够在代码停止时滚动页面) 最佳答案 是的,这是可以做到的。这将结束javascript的执行。thrownewError(''); 关于javascript-停止所有javascript执行,我们在StackOver
有什么方法可以在JavaScript中设置程序断点,以便Firebug停止执行代码,我可以在Firebug中继续逐步调试。类似于在python中完成的操作,例如:importpdb;pdb.set_trace() 最佳答案 如果我没理解错的话,你可以使用debuggerkeyword. 关于javascript-Firebug编程断点?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question
我正在尝试在浏览器(特别是Chrome)中调试一些js。如何检查为some_data和new_data设置了什么值?我意识到由于变量范围被限制在函数中,some_data和new_data在文档ready()执行后不存在。$(document).ready(function(){varsome_data=[4,8,15,16,23,42];varnew_data=some_data*2;}); 最佳答案 使用开发者工具。如果您使用的是chrome,请按F12,转到源代码,找到您的javascript所在的文件,找到您的代码,设置一个
我的网站上加载了这段代码fingerprintingpageloaded.//console.log(window);functiongetIPhoneModel(){//CreateacanvaselementwhichcanbeusedtoretrieveinformationabouttheGPU.varcanvas=document.createElement("canvas");if(canvas){varcontext=canvas.getContext("webgl")||canvas.getContext("experimental-webgl");if(context
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。我一直在firefox中使用firebug,这是调试php/javascript代码的好工具。最近有些东西在我的网站上停止工作,在firefox中运行良好,但在chrome中却不行,所以我需要在chrome中调试它,但我找不到任何好的调试器,你们对此有什么建议吗?