"ECMAScript 사양 이해하기, 2부"의 추가 콘텐츠
왜 o2.foo
가 AssignmentExpression
인가요?
o2.foo
는 할당이 없는 것처럼 보이기 때문에 AssignmentExpression
처럼 느껴지지 않습니다. 왜 이것이 AssignmentExpression
인가요?
사양은 실제로 AssignmentExpression
이 매개변수로 사용되거나 할당의 오른쪽에 올 수 있도록 허용합니다. 예를 들어:
function simple(a) {
console.log('매개변수는 ' + a);
}
simple(x = 1);
// → “매개변수는 1”이 로깅됩니다.
x;
// → 1
…및…
x = y = 5;
x; // 5
y; // 5
o2.foo
는 아무것도 할당하지 않는 AssignmentExpression
입니다. 이는 다음 문법 생산에서 비롯되며 각각은 마지막 케이스까지 "가장 간단한" 케이스를 선택합니다:
AssignmentExpression
은 반드시 할당을 포함할 필요가 없으며, 단순히 ConditionalExpression
일 수도 있습니다:
(이 외의 생산도 있지만, 여기서는 관련된 것만 보여줍니다.)
ConditionalExpression
은 반드시 조건부 (a == b ? c : d
)를 포함할 필요가 없으며, 단순히 ShortcircuitExpression
일 수도 있습니다:
그리고 계속해서:
ShortCircuitExpression : LogicalORExpression
LogicalORExpression : LogicalANDExpression
LogicalANDExpression : BitwiseORExpression
BitwiseORExpression : BitwiseXORExpression
BitwiseXORExpression : BitwiseANDExpression
BitwiseANDExpression : EqualityExpression