Node 8.10.0出现“Octal literals are not allowed in strict mode”报错求助
问题原因及解决方案
这个错误的根源非常明确:你代码里的0000是传统的八进制数字字面量(早期JavaScript中,以0开头的数字会被解析为八进制),而严格模式(strict mode)明确禁止了这种写法——它不仅容易造成阅读混淆,也不符合ECMAScript的规范要求。
具体细节:
- Node.js 8.10.0搭载的V8引擎严格遵循ES5及后续标准,会对严格模式下的八进制字面量直接抛出错误;而之前的开发环境可能没有启用严格模式,或者版本较老、对这类语法检查更宽松,所以没暴露这个问题。
- 你的代码
validationResult: !0000里,0000本质上和0是同一个值,但写法违规。!0000的本意应该是想得到true(因为!0就是true),完全没必要用多位数的八进制写法。
修复方案:
直接把0000改成0,代码修正为:
settings: { purchaseAmount: null, pendingTime: 500, validationResult: !0 }
这样既符合严格模式规范,也能得到你想要的逻辑结果。如果以后确实需要使用八进制数值,可以用ES6标准的0o前缀(比如0o777),但这个场景下完全不需要。
内容的提问来源于stack exchange,提问作者Reacting
相关产品推荐
相关产品推荐

