The expression evaluator.
The left operand.
The right operand.
If there are no non-lexical arguments, undefined is returned. This tells the caller to handle the rest, it's safe. If there is a non-lexical argument and nonLexicalComparison is true, it returns the result of the string comparison.
If any of the arguments is a non-lexical literal, an error is thrown or string comparison of their value is performed depending on the value of the nonLexicalComparison option.