有些用户偶尔会在我的网站上报告 JS 错误。错误消息说“预期的标识符、字符串或数字”,行号是 423725915,这只是一个任意数字,并且在发生这种情况时每个报告都会发生变化。这主要发生在 IE7/Mozilla 4.0 浏览器中。
我扫描了我的代码很多次并运行了 jslint 但它没有找到任何东西 - 有谁知道导致此错误消息的 JS 问题的一般类型?
有些用户偶尔会在我的网站上报告 JS 错误。错误消息说“预期的标识符、字符串或数字”,行号是 423725915,这只是一个任意数字,并且在发生这种情况时每个报告都会发生变化。这主要发生在 IE7/Mozilla 4.0 浏览器中。
我扫描了我的代码很多次并运行了 jslint 但它没有找到任何东西 - 有谁知道导致此错误消息的 JS 问题的一般类型?
此类错误的原因通常是对象或数组定义中的逗号错位:
var obj = {
id: 23,
name: "test", <--
}
如果它出现在随机行中,则它可能是您动态创建的对象定义的一部分。
使用单词class作为 Javascript 字典中的键也可能触发可怕的“预期标识符、字符串或数字”错误,因为class是 Internet Explorer 中的保留关键字。
坏的
{ class : 'overlay'} // ERROR: Expected identifier, string or number
好的
{'class': 'overlay'}
在 Javascript 字典中使用保留关键字作为键时,请将键括在引号中。
希望这个提示可以为您节省一天的调试时间。
实际上我最近在 IE 上遇到了类似的问题,它与 JavaScript 语法“错误”有关。我用引号说错误是因为它在任何地方都很好,但在 IE 上。这是在 IE6 下。该问题与 JSON 对象创建和额外的逗号有关,例如
{ one:1, two:2, three:3, }
IE6 真的不喜欢 3 之后的逗号。您可能会寻找类似的东西,敏感的小语法形式问题。
是的,我认为我的 25 行 JavaScript 中的数百万行数也很有趣。
祝你好运。
这是一个明确的非答案:消除一个诱人但错误的答案,以帮助其他人找到正确的答案。
调试似乎会突出问题。但是,出现问题的唯一浏览器是 IE,在 IE 中您只能调试原始文档中的代码。对于动态添加的代码,调试器只是将 body 元素显示为当前指令,而 IE 声称错误发生在一个巨大的行号上。
这是一个示例网页,将在 IE 中演示此问题:
<html>
<head>
<title>javascript debug test</title>
</head>
<body onload="attachScript();">
<script type="text/javascript">
function attachScript() {
var s = document.createElement("script");
s.setAttribute("type", "text/javascript");
document.body.appendChild(s);
s.text = "var a = document.getElementById('nonexistent'); alert(a.tagName);"
}
</script>
</body>
这给我带来了以下错误:
Line: 54654408
Error: Object required
刚刚看到我的一个应用程序中的错误,作为一个包罗万象的,请记住将所有与关键字相同的 javascript 属性的名称括起来。
在处理了一个错误后发现了这个错误,其中一个对象,例如:
var x = { class: 'myClass', function: 'myFunction'};
生成错误(类和函数是关键字)这是通过添加引号修复的
var x = { 'class': 'myClass', 'function': 'myFunction'};
我希望能为你节省一些时间