10

を使用して、複数の js ファイルを 1 つに最適化していますr.js。以前は正常に動作します。最近、いくつかの js コードを変更し、コードを次のように追加しました。

var x = 08;

それからそれは示します

エラー: ファイル D://webroot/js/a.js の esprima を使用した解析エラー

エラー: 45 行目: 予期しないトークンが不正です。

45 行目に を追加するvar x = 08と、09エラーも表示されます。8orを含む間に 0 で始まる数字9は違法のようです。もしかして8桁の扱いだったのかな..?

r.jsこの点を無視して js ファイルを最適化するにはどうすればよいですか?

4

4 に答える 4

15

私は同じ問題を抱えていました

ファイルを要求している間、それは単なる二重のコンマだったことが判明しました。元

define([
 'file1',
 'file2',
 'file3',,
 'file4'

お役に立てれば

于 2014-09-23T07:11:04.267 に答える
5

r.jsエラーは、内部で使用する Esprima によるものです。問題を再現するには、このページに移動して入力しますvar x = 08;

一般的に言えば、JavaScript インタープリターは8 進数として解釈できる先行ゼロの数値を 8 進数として扱いますが、8 進数として解釈できない場合 (08 など) は 10 進数として扱います。 .

Node.js でテストを行ったところ、次の結果が得られました。

$ node
> 07
7
> 08
8
> 09
9
> 010
8
> 

さらにお楽しみください:

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

厳密モードがオンの場合、8 進数は無効です。

私は 8 進数を避け、JavaScript で数字の前にゼロを付けることは決してありません。

于 2013-11-04T17:45:29.013 に答える
0

require js モジュール内の 1 行の if ステートメントで疑問符を忘れたときに、同じエラーが発生しました。

間違った行:

var check = self.currentScroll() > self.lastScroll() ? 1 : self.currentScroll() < self.lastScroll() -1 : 0

訂正:

var check = self.currentScroll() > self.lastScroll() ? 1 : self.currentScroll() < self.lastScroll() ? -1 : 0
于 2015-06-18T10:57:44.223 に答える