Javascript错误的可能情况:“期望的标识符,string或数字”

有些用户报告偶尔在我的网站上的JS错误。 错误消息显示“预期的标识符,string或数字”,行号是423725915,这是一个任意数字,并在发生这种情况时更改每个报告。 这主要发生在IE7 / Mozilla 4.0浏览器上。

我扫描我的代码很多次,并运行jslint,但没有select任何东西 – 任何人都知道导致这个错误消息的JS问题的一般types?

这种types的错误的原因通常可能是对象或数组定义中错位的逗号:

var obj = { id: 23, name: "test", <-- } 

如果它出现在一个随机线上,也许它是你dynamic创build的对象定义的一部分。

因为class是Internet Explorer中的保留关键字,所以在Javascript字典中使用单词class作为键也会触发可怕的“Expected identifier,string or number”错误。

 { class : 'overlay'} // ERROR: Expected identifier, string or number 

 {'class': 'overlay'} 

在Javascript字典中使用保留关键字作为关键字时,请将该关键字用引号引起来。

希望这个提示为你节省了一天的时间。

其实我最近在IE上得到了类似的东西,它和JavaScript语法“错误”有关。 我说引号错误,因为它到处都很好,但在IE浏览器。 这是在IE6下。 这个问题与JSON对象创build和一个额外的逗号相关,比如

 { one:1, two:2, three:3, } 

IE6真的不喜欢那个3之后的逗号。你可能会寻找类似的东西,很棘手的语法forms问题。

是的,我想我的25行JavaScript中的数百万行号码也很有趣。

祝你好运。

这是一个明确的不答复:消除一个诱惑,但错误的答案,以帮助其他人正确的答案。

debugging可能会突出显示问题。 但是,唯一的浏览器出现的问题是IE浏览器,而在IE中你只能debugging原始文档的一部分代码。 对于dynamic添加的代码,debugging器只显示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属性的名称。

在发现一个对象如下所示的bug后发现这个bug:

 var x = { class: 'myClass', function: 'myFunction'}; 

生成的错误(类和函数是关键字)这是通过添加引号解决

 var x = { 'class': 'myClass', 'function': 'myFunction'}; 

我希望能节省一些时间

如前所述,有一个额外的逗号抛出一个错误。

同样在IE 7.0中,在行尾没有分号会导致错误。 它在Safari和Chrome中运行正常(在控制台中没有错误)。

IE7比新的浏览器,特别是Chrome浏览器宽松得多。 我喜欢使用JSLint来查找这些错误。 它会发现这些不正确的逗号等等。 您可能会想要激活该选项来忽略不正确的空格。

除了不恰当的逗号之外,在这个博客的评论中有人报道:

我一直在寻找一个只在IE(7)中表示“预期标识符”的错误。 我的研究把我带到了这个页面。 经过一番沮丧,事实certificate,我用一个保留字作为函数名称(“开关”)的问题。 错误不明确,并指出错误的行号。

删除不需要的,loginfunction。 你会得到解决scheme。

参考这个

http://blog.favrik.com/2007/11/29/ie7-error-expected-identifier-string-or-number/

当我们添加或错过删除在数组或function代码末尾的逗号时发生此错误。 有必要观察一个网页的整个代码的这种错误。

当我编写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> 

这听起来像一个脚本,是用src拉进来的,只是中途加载,导致语法错误正弦,余下的不加载。

IE7的对象数组有问题

 columns: [ { field: "id", header: "ID" }, { field: "name", header: "Name" , /* this comma was the problem*/ }, ... 

这个bug的另一个变种:我有一个名为“继续”的函数,因为它是一个保留字,它抛出了这个错误。 我不得不重新命名我的函数“继续点击”

也许你有一个对象有一个方法的“构造函数”,并试图调用这个。

在使用Knockout JS时你可能会遇到这个问题。 如果您尝试像下面的例子那样设置类属性,它将会失败:

 <span data-bind="attr: { class: something() }"></span> 

像这样逃离类的string:

 <span data-bind="attr: { 'class': something() }"></span> 

我的2美分。

我也遇到过这个问题。 我发现下面两个解决scheme。 1)。 和上面提到的一样,从JSON对象中移除额外的逗号。 2)。 另外,我的JSP / HTML有。 正因为如此,它正在触发浏览器的旧模式,这是给额外的逗号JS错误。 当使用它会触发浏览器的HTML5模式(如果支持),即使使用额外逗号,它也可以正常工作,就像其他浏览器FF,Chrome等一样。

这是一个简单的技术来debugging问题:将脚本/代码回显给控制台。 将控制台中的代码复制到IDE中。 大多数IDE对代码执行错误检查并突出显示错误。 您应该能够在您的JavaScript / HTML编辑器中几乎立即看到错误。

有不同的configuration相同的问题。 这是一个有angular度的工厂定义,但我认为它也可能发生在其他地方:

 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 } } }); 

使用“ IEDeveloper ”工具,您可以精确debugging错误,工具甚至可以显示错误所在的行,请尝试并享受