首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用esprima对r.js优化js文件时使用esprima解析错误

使用esprima对r.js优化js文件时使用esprima解析错误
EN

Stack Overflow用户
提问于 2013-11-01 01:20:36
回答 4查看 11K关注 0票数 10

我正在使用r.js将几个js文件优化为一个。以前很好用。最近,我修改了一些js代码,将代码添加为:

代码语言:javascript
复制
var x = 08;

然后它显示

错误:对文件D://webroot/js/a.js使用esprima解析错误 错误:第45行:意外令牌非法。

第45行是我添加var x = 08的地方,09也会显示错误。从0开始的数字似乎是非法的,同时包含89。也许他们被当作bese 8 .?

我怎么能让r.js忽略这一点而仍然优化js文件呢?

EN

回答 4

Stack Overflow用户

发布于 2014-09-23 07:11:04

我也有同样的问题

当需要文件时,它只是一个双逗号。例如

代码语言:javascript
复制
define([
 'file1',
 'file2',
 'file3',,
 'file4'

希望这能有所帮助

票数 15
EN

Stack Overflow用户

发布于 2013-11-04 17:45:29

这个错误是由于r.js内部使用的Esprima造成的。要复制这个问题,可以转到此页并输入var x = 08;

一般来说,JavaScript解释器似乎会将一个带前导零的数字处理,可以将解释为一个八进制数,但是如果它不能被解释为一个八进制数(例如08),那么他们将把它看作十进制。

我用Node.js做了一个测试,得到了如下结果:

代码语言:javascript
复制
$ node
> 07
7
> 08
8
> 09
9
> 010
8
> 

更有趣的是:

代码语言:javascript
复制
> (function () {'use strict'; var x = 08;})()
undefined
> (function () {'use strict'; var x = 012;})()
SyntaxError: Octal literals are not allowed in strict mode.
[ ... traceback deleted ...]

当严格模式打开时,八进制是非法的。

在JavaScript中,我会避免八进制,也不会用零作为任何数字的前缀。

票数 5
EN

Stack Overflow用户

发布于 2015-06-18 10:57:44

当我在一个require模块中的一行if语句中忘记问号时,我也犯了同样的错误。

错误的线路:

代码语言:javascript
复制
var check = self.currentScroll() > self.lastScroll() ? 1 : self.currentScroll() < self.lastScroll() -1 : 0

更正:

代码语言:javascript
复制
var check = self.currentScroll() > self.lastScroll() ? 1 : self.currentScroll() < self.lastScroll() ? -1 : 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19719386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档