var c = (1;); で "SyntaxError: Unexpected token ;"

Expression (式) があるべき場所に Statement (文) があるので SyntaxError になる。
0
think49 @think49

var a = 1; var b = (1); var c = (1;); // c だけ "SyntaxError: Unexpected token ;" になる。 #JavaScript

2010-12-24 21:13:40
think49 @think49

@think49 これは「グループ化演算子の内部に単一の Expression を持たなければならないから」という理解であっているのだろうか? http://goo.gl/pLxPF

2010-12-24 21:14:27
think49 @think49

@think49 (;) でも "SyntaxError: Unexpected token ;" になる。根本的に理解が間違っていたらしい。

2010-12-24 21:34:14
think49 @think49

@think49 1 はNumberリテラルであり、PrimaryExpression -> Literal -> NumericLiteral である。つまり、Expression (式) の一種。 http://goo.gl/N15jd

2010-12-24 21:38:47
think49 @think49

@think49 ; は EmptyStatement であり、Statement (文) の一種。http://goo.gl/xkj5a

2010-12-24 21:40:12
think49 @think49

@think49 (;) を実行したとき、ECMAScript エンジンは Expression (式) があるべき場所に EmptyStatement という Statement (文) があるので "SyntaxError: Unexpected token ;" を返す。

2010-12-24 21:42:09
think49 @think49

@think49 var c = (1;); もそういうこと。グループ化演算子の内部に (NumericLiteral + EmptyStatement) があるので、SyntaxError を返す。

2010-12-24 21:45:14
think49 @think49

@think49 if (1) が通って、if (1;) で "SyntaxError: Unexpected token ;" を返す理由も同じ。

2010-12-24 21:47:42