2016-01-12 3 views
0

Я хочу написать программу, чтобы удалить все объявления let в javascript программах автоматически. Для операторов, какПреобразование JavaScript с let to var

function a(){ 
    "use strict" 
    var a=1,b=1; 
    if(true){ 
    let a=2; 
    var b=2; 
    var c=a+b; 
    let d=a+b; 
    } 
    alert(a); 
    alert(b); 
    alert(c); 
    alert(d); 

} 
a(); 

Я имею в виду использовать непосредственные функции для удаления let

function a(){ 
     "use strict" 
     var a=1,b=1; 
     if(true){ 
     (function(){ 
     let a=2; 
     var b=2; 
     var c=a+b; 
     let d=a+b; 
     })() 
     } 
     alert(a); 
     alert(b); 
     alert(c); 
     alert(d); 

    } 
    a(); 

может быть сфера let правильно, но объем var будет неправильным.

Любые предложения по этому вопросу?

+1

Вы можете использовать [babeljs.io] (https://babeljs.io) для такой задачи , –

+0

Я думаю, что это преобразование Babel, которое вы ищете: https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-block-scoping –

ответ

1

Я хотел бы предложить вам, чтобы объявить переменную перед вашим немедленно вызываемыми выражение функции, например, так:

function a(){ 
    "use strict" 
    var a=1, b=1, c; 
    if(true){ 
    (function(){ 
     let a=2; 
     b=2; 
     c=a+b; 
     let d=a+b; 
    })(); 
    } 
    alert(a); 
    alert(b); 
    alert(c); 
    alert(d); 
} 
a();