tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

semantics-10.js (558B)


      1 // The LHS of a for-loop is not bound to a particular scope until after the .next() method returns.
      2 
      3 var obj = {};
      4 
      5 // Test 1
      6 function* g() {
      7    obj.x = 0;
      8    yield 1;
      9 }
     10 var x = 2, n = 0;
     11 with (obj) {
     12    for (x of g())  // g().next() inserts a binding for x on obj
     13        n++;
     14 }
     15 assertEq(x, 2);
     16 assertEq(obj.x, 1);
     17 assertEq(n, 1);
     18 
     19 // Test 2
     20 function* h() {
     21    delete obj.x;
     22    yield 3;
     23 }
     24 n = 0;
     25 with (obj) {
     26    for (x of h())  // h().next() deletes the binding for x on obj
     27        n++;
     28 }
     29 assertEq(x, 3);
     30 assertEq("x" in obj, false);
     31 assertEq(n, 1);