diff --git a/lib/6to5/transformation/transformers/es6-classes.js b/lib/6to5/transformation/transformers/es6-classes.js index 383a477d3d..db1022a33d 100644 --- a/lib/6to5/transformation/transformers/es6-classes.js +++ b/lib/6to5/transformation/transformers/es6-classes.js @@ -3,7 +3,19 @@ var util = require("../../util"); var t = require("../../types"); exports.ClassDeclaration = function (node, parent, file, scope) { - return new Class(node, file, scope, false).run(); + var closure = true; + if (t.isProgram(parent) || t.isBlockStatement(parent)) { + closure = false; + } + + var newNode = new Class(node, file, scope, closure).run(); + if (closure || t.isFunctionExpression(newNode)) { + return t.variableDeclaration("let", [ + t.variableDeclarator(node.id, newNode) + ]); + } else { + return newNode; + } }; exports.ClassExpression = function (node, parent, file, scope) {