Javascript脚本遭遇Expected identifier错误

本文介绍了一个在IE6和IE7浏览器中出现的脚本错误问题及其解决方案。该错误为“Expected identifier, string or number”,通过仔细检查发现是由多余的逗号引起。Firefox和IE8可以忽略此问题,但IE6和IE7则会报错。

       这几天调试程序都很正常。未曾想,有一个同事今天要测试我的程序,他用他的IE6浏览器一打开就发现了脚本错误:Expected identifier, string or number。但是用FireFox,IE8测试都没有这个问题。经测试,只有IE6,IE7会报这个脚本错误。而且从所报的脚本行数寻找过去,好像没有发现什么问题。于是几乎把整个程序文件重新过了一遍。折腾半天后发现是由于程序里多出了一个逗号。而这样的逗号FireFox和IE8都会忽略掉,IE6和IE7会认为逗号后面还有代码,但是又不能检测到,所以报错。当时的代码如下

看到了吧:“ name:"domain",”最后这个逗号就是罪魁祸首。从上千行代码中找到它真得不容易。

<think>嗯,用户遇到了C++编译器报错“expected identifier before numeric constant”,想知道原因和解决方法。首先,我需要回忆一下这个错误通常发生在什么情况下。根据之前的引用资料,比如引用[1]提到在类中初始化vector时出现这个错误,可能是因为在类定义中直接使用了类似`vector<int> v(10, 0);`的初始化方式。C++的类成员变量在声明时不允许用括号进行初始化,必须使用等号或者花括号。 然后,引用[2]和[3]给出了解决方案,比如使用`vector<int> A = vector<int>(10, 0);`这种方式,或者用C++11之后的统一初始化语法,比如花括号`{}`。这可能是因为在类内部,直接调用构造函数的方式不被允许,而使用赋值或者列表初始化可以绕过这个问题。 接下来,我需要整理这些信息,分步骤解释错误原因和解决方法。可能还需要提到C++11的标准,因为用户可能不知道不同的初始化方式在不同版本中的支持情况。另外,用户可能是在类定义中直接写了带括号的初始化,导致编译器误以为是函数声明或者其他结构,从而报错。 需要确保回答结构清晰,先说明错误原因,再给出具体的解决办法,可能还要附上示例代码,这样用户能更直观地理解如何修改他们的代码。同时,要提醒用户检查编译器是否支持C++11或更高版本,如果使用旧版本可能需要调整初始化方式。 最后,生成的相关问题应该围绕这个错误的常见场景、其他初始化方法或C++版本差异展开,帮助用户进一步巩固相关知识,避免未来遇到类似问题。</think>### 编译器报错 "expected identifier before numeric constant" 的原因及解决方法 #### 错误原因 该错误通常发生在C++类定义中,**直接使用括号`()`初始化成员变量**时。例如: ```cpp class MyClass { vector<int> v(10, 0); // 错误示例 }; ``` 编译器会将`v(10, 0)`解析为**函数声明**而非成员初始化,但`10`是数字常量而非合法标识符,导致报错[^1][^3]。 #### 解决方法 根据C++标准,类内成员变量初始化需遵循以下方式: 1. **使用等号赋值初始化** ```cpp class MyClass { vector<int> v = vector<int>(10, 0); // 正确写法 }; ``` 2. **C++11及以上版本支持花括号初始化** ```cpp class MyClass { vector<int> v{vector<int>(10, 0)}; // 统一初始化语法 }; ``` 3. **在构造函数中初始化** ```cpp class MyClass { vector<int> v; MyClass() : v(10, 0) {} // 初始化列表 }; ``` #### 注意 - 嵌套容器初始化时需注意空格:`vector<vector<int>>`应写为`vector<vector<int> >`(C++11前)[^2] - 确保编译器支持C++11或更高标准(可通过编译选项`-std=c++11`启用)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值