11.11 Binary logical operators

2010-05-22

LogicalANDExpression :
BitwiseORExpression
LogicalANDExpression && BitwiseORExpression

LogicalANDExpressionNoIn :
BitwiseORExpressionNoIn
LogicalANDExpressionNoIn && BitwiseORExpressionNoIn

LogicalORExpression :
LogicalANDExpression
LogicalORExpression || LogicalANDExpression

LogicalORExpressionNoIn :
LogicalANDExpressionNoIn
LogicalORExpressionNoIn || LogicalANDExpressionNoIn

Code: (Meta Ecma)
function evaluate(LogicalORExpression && LogicalANDExpression) {
var lref = evaluate(LogicalANDExpression);
var lval = GetValue(lref);
if (!ToBoolean(lval)) return lval;
var rref = evaluate(BitwiseORExpression);
return GetValue(rref);
}


Code: (Meta Ecma)
function evaluate(LogicalORExpression || LogicalANDExpression) {
var lref = evaluate(LogicalORExpression );
var lval = GetValue(lref);
if (ToBoolean(lval)) return lval;
var rref = evaluate(LogicalANDExpression);
return GetValue(rref);
}


The NoIn versions behave identical.