much better let scoping without wrapping functions #52 #49 #24

This commit is contained in:
Sebastian McKenzie
2014-10-13 04:37:28 +11:00
parent 5ed049cc24
commit da4a5d48ad
38 changed files with 363 additions and 47 deletions

View File

@@ -1,4 +1,4 @@
for (let i in arr) {
let MULTIPLIER = 5;
console.log(arr[i] * MULTIPLIER);
for (var _i in arr) {
var _MULTIPLIER = 5;
console.log(arr[_i] * _MULTIPLIER);
}

View File

@@ -1,21 +1,21 @@
var _ref = [1, 2];
let a = _ref[0];
let b = _ref[1];
var _a = _ref[0];
var _b = _ref[1];
var _ref2 = [3, 4];
let c = _ref2[0];
let d = _ref2[1];
var _c = _ref2[0];
var _d = _ref2[1];
var _ref3 = {
e: 5,
f: 6
};
let e = _ref3.e;
let f = _ref3.f;
var _e = _ref3.e;
var _f = _ref3.f;
var _ref4 = {
a: 7,
b: 8
};
let g = _ref4.a;
let h = _ref4.b;
var _g = _ref4.a;
var _h = _ref4.b;

View File

@@ -1,5 +1,5 @@
let MULTIPLIER = 5;
var _MULTIPLIER = 5;
for (var i in arr) {
console.log(arr[i] * MULTIPLIER);
console.log(arr[i] * _MULTIPLIER);
}

View File

@@ -1,3 +1,3 @@
for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {
let i = _step.value;
var _i = _step.value;
}

View File

@@ -0,0 +1,8 @@
var a = 'var a';
{
var b = 'var b';
{
var c = 'var c';
let d = 'let d';
}
}

View File

@@ -0,0 +1,18 @@
var result;
{
let let_result = [];
let let_array = ['one', 'two', 'three'];
for (var index in let_array) {
let let_index = index;
let let_value = let_array[let_index];
let_result.push(
function() {
return [let_index, let_value];
});
}
result = let_result;
}
assert.deepEqual(['0', 'one'], result[0]());
assert.deepEqual(['1', 'two'], result[1]());
assert.deepEqual(['2', 'three'], result[2]());

View File

@@ -0,0 +1,10 @@
var result;
{
let let_x = 'let x';
let let_l = [];
for (var var_x = 1, var_y = 2, var_z = 3; var_x < 10; var_x ++) {
let l_x = var_x, l_y = var_y, l_z = var_z;
let_l.push( function() { return [ l_x, l_y, l_z ]; } );
}
result = let_l;
}

View File

@@ -0,0 +1,15 @@
class LetInClass {
get z() {
let let_z = 10;
return let_z;
}
set z(v) {
let let_zv = v;
}
distance() {
let dist = this.y - this.x;
return dist;
}
}

View File

@@ -0,0 +1,21 @@
function letInClosure(n) {
var l = [];
for (var i = 0; i < n; i ++) {
let let_i = i;
if (i % 3 == 0) {
continue;
}
l.push(function() {
return let_i;
});
}
return l;
}
var result = letInClosure(10);
assert.deepEqual(1, result[0]());
assert.deepEqual(2, result[1]());
assert.deepEqual(4, result[2]());
assert.deepEqual(5, result[3]());
assert.deepEqual(7, result[4]());
assert.deepEqual(8, result[5]());

View File

@@ -0,0 +1,8 @@
for (var x = 0; x < 10; x ++) {
for (var y = 0; y < 10; y ++) {
let z = 'let z';
if (x == 7) {
break;
}
}
}

View File

@@ -0,0 +1,9 @@
outer:
for (var x = 0; x < 10; x ++) {
for (var y = 0; y < 10; y ++) {
let z = 'let z';
if (x == 7) {
break outer;
}
}
}

View File

@@ -0,0 +1,6 @@
for (var x = 0; x < 10; x ++) {
let y = 'let y';
if (x % 2 == 0) {
break;
}
}

View File

@@ -0,0 +1,8 @@
for (var x = 0; x < 10; x ++) {
for (var y = 0; y < 10; y ++) {
let z = 'let z';
if (x == 7) {
continue;
}
}
}

View File

@@ -0,0 +1,9 @@
outer:
for (var x = 0; x < 10; x ++) {
for (var y = 0; y < 10; y ++) {
let z = 'let z';
if (x == 7) {
continue outer;
}
}
}

View File

@@ -0,0 +1,6 @@
for (var x = 0; x < 10; x ++) {
let y = 'let y';
if (x % 2 == 0) {
continue;
}
}

View File

@@ -0,0 +1,3 @@
for (var x = 0; x < 10; x ++) {
let y = 'let y';
}

View File

@@ -0,0 +1,15 @@
var object = {
get x() {
while (true) {
let let_x = 'let x';
return let_x;
}
},
set x(v) {
do {
let let_v = v;
this.v = let_v;
} while (false);
}
}

View File

@@ -0,0 +1,3 @@
for (let x = 1; x < 10; x++) {
x;
}

View File

@@ -0,0 +1,4 @@
for (let x = 1, y = 2, z = 3; x < 10; x ++) {
y++;
z++;
}

View File

@@ -0,0 +1,5 @@
for (let x = 1, y = x + 1; x < 10 && y != 0; x ++, y *= 2) {
if (y > 300) {
continue;
}
}

View File

@@ -0,0 +1,5 @@
let sum = 0;
let a = [1,2,3];
for (let x in a) {
sum = sum + a[x];
}

View File

@@ -0,0 +1,12 @@
(function() {
var x = 1;
function f() {
assert.equal(x, 1);
{
let x = 2;
assert.equal(x, 2);
}
assert.equal(x, 1);
}
f();
})();

View File

@@ -0,0 +1,5 @@
function nestedFunction1() {
return function() {
let let_x = 'let x';
}
}

View File

@@ -0,0 +1,6 @@
function nestedFunction2() {
let let_func = function() {
let let_x = 'let x';
}
return let_func;
}

View File

@@ -0,0 +1,4 @@
function nestedFunction3() {
let let_x = 'let x';
function function_foo() { }
}

View File

@@ -0,0 +1,7 @@
var x = 'var';
{
let y = 'let 1';
}
{
let y = 'let 2';
}

View File

@@ -0,0 +1,4 @@
let x2;
assert.equal(undefined, x2);
x2 = 2;
assert.equal(2, x2);

View File

@@ -0,0 +1,8 @@
var x = 1;
{
let x;
assert.equal(undefined, x);
x = 2;
assert.equal(2, x);
}
assert.equal(1, x);

View File

@@ -0,0 +1,3 @@
{
"exec": true
}

View File

@@ -0,0 +1,8 @@
function test() {
let ret = true;
while (false)
for (let i = 0; i < 1; i++)
ret = () => i;
return ret
}
assert.ok(test());

View File

@@ -0,0 +1,6 @@
for (var x in [1,2,3]) {
let let_y = x;
for (var for_in_z in [4,5,6]) {
continue;
}
}

View File

@@ -0,0 +1,6 @@
for (var x = 0; x < 10; x++) {
let let_y = 'let y';
for (var for_z = 0; for_z < 2; for_z ++) {
break;
}
}

View File

@@ -0,0 +1,12 @@
for (var i = 0; i < 5; i ++) {
let let_x = 'let x';
switch (i) {
case 0:
break;
case 2:
break;
default:
break;
}
}

View File

@@ -9,14 +9,14 @@ exports.foo2 = foo2;
var foo3;
exports.foo3 = foo3;
let foo4 = 2;
exports.foo4 = foo4;
var _foo4 = 2;
exports.foo4 = _foo4;
let foo5;
exports.foo5 = foo5;
var _foo5;
exports.foo5 = _foo5;
let foo6 = 3;
exports.foo6 = foo6;
var _foo6 = 3;
exports.foo6 = _foo6;
function foo7 () {}