This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
I think this needs to be rewritten: "Let length be one greater than V’s maximum indexed property index, if V is a platform object that supports indexed properties, or the result of calling [[Get]] on V with property name “length” otherwise." to: "If V is a platform object that supports indexed properties, let length be one greater than V’s maximum indexed property index. Otherwise, let length be the result of calling [[Get]] on V with property name “length”."
I try to avoid variable declarations that are not at the beginning of the step, since "let" implies a scope to me that would be defeated by if the "if" statement around it. So if anything I would reword it as: Let length be a value determined based on the type of V: -- a platform object that supports indexed properties The value is one greater than V's maximum indexed property index. -- otherwise The value is the result of calling [[Get]] on V with property name "length". But I don't think it's particularly unclear at the moment. There are plenty of other instances of "x, if y, otherwise z" in the spec.
I agree it is awkward and I don't especially like having "otherwise" used as a disjunctive "else" placed at the end of the sentence. The direction of what you've written in your follow up comment is a lot clearer.