ES6 / BABEL允许范围

时间:2016-08-12 08:24:53

标签: cordova scope ecmascript-6 babeljs let

我有一个我在ES6中实现的功能。除了访问循环中的变量(函数范围)之外,一切正常。

我正在函数的开头定义 let u 。在for循环中,一些子项应该附加到该变量 u 。当我在循环结束后将 u 注入到DOM中时,没有显示子元素,但是在循环中 u 被操纵(如控制台所说)。

我想我无法在循环/ if块中操作范围 u 的函数...但是,我从ES6中的let声明中理解 - 它应该可以工作!?有没有人有想法?谢谢!

背景:这是用babel转发到ES5的ES6代码,然后编译成在Windows 10 / UWP上运行的Apache Cordova应用程序,这可能会有所帮助

export function buildSubNavigation(parent) {

let u = $('<ul>')
    .addClass('subNavbarList');

for (let p in window.pages) {
    if(window.pages[p]['parent'] == parent){

        let i = $('<li>')
            .addClass('subNavbarItem')
            .attr('id','subNavbarItem' + window.pages[p]['id'])
            .click(function(){
                // bind functions
                //...
            });
        // console prints proper list items
        console.log(i);
        // console prints u including list childs
        u.append(i);
    }
}

// inject into page
// no list childs are injected to DOM, only UL element
$('#subNavbar').html(u);
//...
}

1 个答案:

答案 0 :(得分:0)

事实证明,代码本身很干净,并没有产生错误。在通过npm重新安装模块后,代码的ES6 Babel转换出现了一些错误。