一些用户在我的网站上偶尔报告JS错误。错误消息显示“期望的标识符,字符串或数字”,并且行号为423725915,这只是一个任意数字,发生这种情况时,每个报告都会更改。这主要发生在IE7 / Mozilla 4.0浏览器中。
我扫描了很多次代码,然后运行jslint,但没有收到任何结果-有人知道导致此错误消息的JS问题的一般类型吗?
一些用户在我的网站上偶尔报告JS错误。错误消息显示“期望的标识符,字符串或数字”,并且行号为423725915,这只是一个任意数字,发生这种情况时,每个报告都会更改。这主要发生在IE7 / Mozilla 4.0浏览器中。
我扫描了很多次代码,然后运行jslint,但没有收到任何结果-有人知道导致此错误消息的JS问题的一般类型吗?
Answers:
此类错误的原因通常是对象或数组定义中逗号放置错误:
var obj = {
id: 23,
name: "test", <--
}
如果它出现在随机线上,则可能是您正在动态创建的对象定义的一部分。
,\s*?\n?\s*?]和,\s*?\n?\s*?\}
由于在Internet Explorer中类是保留关键字,因此在Javascript词典中使用单词class作为键也可能触发可怕的“期望的标识符,字符串或数字”错误。
坏
{ class : 'overlay'} // ERROR: Expected identifier, string or number
好
{'class': 'overlay'}
在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
<script>本地或作为已加载资源的标记将javascript临时放在文档本身中。调试 切换回您的工作脚本。
刚看到我的一个应用程序中的错误,作为一个包罗万象,请记住将与关键字相同的所有javascript属性的名称括起来。
遇到以下对象的错误后发现此错误:
var x = { class: 'myClass', function: 'myFunction'};
生成错误(类和函数是关键字),此错误已通过添加引号来解决
var x = { 'class': 'myClass', 'function': 'myFunction'};
我希望可以节省您一些时间
if(_features.delete){...},这引起了错误,因为delete是关键字。 stackoverflow.com/questions/26255/...
http://closure-compiler.appspot.com/home会通过准确引用有问题的脚本中的实际行号来解决此错误。
删除不需要的,登录功能。您将获得解决方案。
推荐这个
http://blog.favrik.com/2007/11/29/ie7-error-expected-identifier-string-or-number/
当我们在数组末尾或函数代码中添加或错过删除逗号时,会发生此错误。有必要观察网页的整个代码以防此类错误。
我在为Facebook API编码时是通过Facebook应用程序代码获得的。
<div id='fb-root'>
<script type='text/javascript' src='http://connect.facebook.net/en_US/all.js'</script>
<script type='text/javascript'>
window.fbAsyncInit = function() {
FB.init({appId:'".$appid."', status: true, cookie: true, xfbml: true});
FB.Canvas.setSize({ width: 800 , height: 860 , });
// ^ extra comma here
};
</script>
IE7存在对象数组问题
columns: [
{
field: "id",
header: "ID"
},
{
field: "name",
header: "Name" , /* this comma was the problem*/
},
...
我也遇到过这个问题。我发现以下两种解决方案。1)。与上面其他人提到的相同,请从JSON对象中删除多余的逗号。2)。另外,我的JSP / HTML具有。因此,它触发了浏览器的旧模式,从而给JS错误带来了额外的逗号。使用时,它会触发浏览器的HTML5模式(如果支持),即使与Extra Comma一样,也可以像其他浏览器FF,Chrome等一样正常工作。
使用不同的配置时遇到相同的问题。这是一个有角度的工厂定义,但我认为它也可能在其他地方发生:
angular.module("myModule").factory("myFactory", function(){
return
{
myMethod : function() // <--- error showing up here
{
// method definition
}
}
});
修复非常奇怪:
angular.module("myModule").factory("myFactory", function(){
return { // <--- notice the absence of the return line
myMethod : function()
{
// method definition
}
}
});