IE6,IE7,IE8下报JS错误:expected identifier, string or number的原因及解决办法

本文介绍了在IE8浏览器中遇到的JavaScript错误“expected identifier, string or number”的原因及解决方法。通常这种错误是因为JSON对象属性名未使用引号或者最后一个属性后误加了逗号造成的。

今天在调试一个页面的时候遇到一个问题,在IE9下运行得很好的脚本,在IE8里打开的时候弹出错误:expected identifier, string or number,按照经验,应该是定义对象的时候最后一个属性末尾跟了逗号,但检查一遍后没发现有这种情况,后来仔细看了一下报错的位置,发现有定义json对象属性时,属性名没有用引号括起来,于是加了上去再试,问题解决了。

综上所述,当出现expected identifier, string or number的错误时,你首先应该检查在使用对象字面量时是否在最后一个属性后跟了逗号,这在js新手写的代码中比较常见,如:

{
‘a’: ‘aValue’,
‘b’: ‘bValue’,
}

,其次,应该检查字面量的属性名是否用引号括起来了,错误示例:

{
a: ‘aValue’,
b: ’bValue’
}
改成:

{
'a': ‘aValue’,
'b': ’bValue’
}

问题就解决了





不同场景下“expected identifier or”相关错误的解决方案如下: - **IE中JavaScript出现‘expected identifier, string or number错误**:在IE中测试JavaScript库时,该错误可能出现在变量声明的最后一行,而火狐浏览器无此问题。不过引用未提及此场景下具体的解决办法 [^1]。 - **C调用C++的库遇到‘expected identifier or ‘(‘ before string constant’错误**:将测试工程中对应的头文件改为如下形式: ```c #ifdef __cplusplus extern "C" { #endif func_1; func_2; #ifdef __cplusplus } #endif ``` 通过这种方式可以解决该问题 [^2]。 - **Tina编译错‘<command-line>: error: expected identifier or ‘(‘ before numeric constant’**:使用tina_multimedia的编译配置信息编译openssl包时出现此错误,可能是编译选项中引入了“-Dd1”与lhash.h中的一些宏定义冲突。将编译配置去掉“-Dd1”进行验证,编译通过,最终发现是定义的TINA_CHIP_TYPE导致的问题,修改相应编译选项可解决 [^3]。 - **Edge浏览器错‘Expected identifier, string or number’**:对于使用vue cli创建的项目,babel-loader默认不会转换node_modules文件夹下的代码,类似ant - design、element-ui这些使用了新的api的库在node_modules里不会被转换。可在配置文件中添加如下内容: ```javascript module.exports = { ... transpileDependencies: ['@babel/preset-env'], } ``` [^4] - **SCRIPT1028: Expected identifier, string or number错误**:该错误是因为js里的逗号多了一个,检查并修正多余的逗号即可解决问题。示例中多余逗号的代码如下: ```javascript "required": { "regex": "none", "alertText": "* Required", "alertTextCheckboxMultiple": "* Please select an option", "alertTextCheckboxe": "* This checkbox is required", } ``` [^5]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值