Tim Tepaße: String.length nicht iterable

Beitrag lesen

Hallo Don,

Sag bloß, die for-Schleife bewirkt ebenfalls eine temporäre Umwandlung des Primitives in ein Objekt?

ECMAScript The for-in Statement:

»The production IterationStatement : for ( LeftHandSideExpression in Expression ) Statement is evaluated as follows:

1. Evaluate the Expression.
2. Call GetValue(Result(1)).
3. Call ToObject(Result(2)).
...«

9.9 ToObject:

»The operator ToObject converts its argument to a value of type Object according to the following table:

...

String – Create a new String object whose [[value]] property is set to the value of the string. See 15.5 for a description of String objects.«

Dann bleibt zumindest noch der erste Teil deiner Aussage falsch, da die length-Eigenschaft bewiesermaßen doch nicht iterable ist.

Ich hab hier keine Ahnung, was Ihr zwei genau mit iterable meint. Dass die Eigenschaft nicht enumiert wird? Klar:

15 Native ECMAScript Objects:

»In every case, the length property of a built-in Function object described in this section has the attributes { ReadOnly, DontDelete, DontEnum }«

ECMAScript The for-in Statement (fortgeführt):

»5. Get the name of the next property of Result(3) that doesn't have the DontEnum attribute. If there is no such property, go to step 14.«

Tim