1 // Copyright 2015 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // let is usable as a variable with var, but not let or ES6 const 6 7 (function (){ 8 assertEquals(undefined, let); 9 10 var let; 11 12 let = 5; 13 assertEquals(5, let); 14 15 (function() { var let = 1; assertEquals(1, let); })(); 16 assertEquals(5, let); 17 })(); 18 19 assertThrows(function() { return let; }, ReferenceError); 20 21 (function() { 22 var let, sum = 0; 23 for (let in [1, 2, 3, 4]) sum += Number(let); 24 assertEquals(6, sum); 25 26 (function() { for (var let of [4, 5]) sum += let; })(); 27 assertEquals(15, sum); 28 29 (function() { for (var let in [6]) sum += Number([6][let]); })(); 30 assertEquals(21, sum); 31 32 for (let = 7; let < 8; let++) sum += let; 33 assertEquals(28, sum); 34 assertEquals(8, let); 35 36 (function() { for (var let = 8; let < 9; let++) sum += let; })(); 37 assertEquals(36, sum); 38 assertEquals(8, let); 39 })(); 40 41 assertThrows(function() { return let; }, ReferenceError); 42 43 (function () { 44 let obj = {}; 45 var {let} = {let() { return obj; }}; 46 let().x = 1; 47 assertEquals(1, obj.x); 48 })(); 49 50 (function() { 51 function let() { 52 return 1; 53 } 54 assertEquals(1, let()); 55 })() 56 57 assertThrows('for (let of []) {}', SyntaxError); 58