cptn-expr-itr.js (1200B)
1 // Copyright (C) 2016 the V8 project authors. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 /*--- 4 es6id: 13.7.5.11 5 description: > 6 Completion value when head has no declaration and iteration occurs 7 info: | 8 IterationStatement : 9 for ( LeftHandSideExpression of AssignmentExpression ) Statement 10 11 1. Let keyResult be the result of performing ForIn/OfHeadEvaluation( « », 12 AssignmentExpression, iterate). 13 2. ReturnIfAbrupt(keyResult). 14 3. Return ForIn/OfBodyEvaluation(LeftHandSideExpression, Statement, 15 keyResult, assignment, labelSet). 16 17 13.7.5.13 Runtime Semantics: ForIn/OfBodyEvaluation 18 19 [...] 20 2. Let V = undefined. 21 [...] 22 5. Repeat 23 a. Let nextResult be IteratorStep(iterator). 24 b. ReturnIfAbrupt(nextResult). 25 c. If nextResult is false, return NormalCompletion(V). 26 [...] 27 k. Let result be the result of evaluating stmt. 28 [...] 29 n. If result.[[value]] is not empty, let V be result.[[value]]. 30 ---*/ 31 32 assert.sameValue(eval('var a; 1; for (a of [0]) { }'), undefined); 33 assert.sameValue(eval('var b; 2; for (b of [0]) { 3; }'), 3); 34 35 reportCompare(0, 0);