Cordova ES6/BABEL-let示波器

Cordova ES6/BABEL-let示波器,cordova,scope,ecmascript-6,babeljs,let,Cordova,Scope,Ecmascript 6,Babeljs,Let,我有一个在ES6中实现的函数。除了在循环中访问变量(函数作用域)之外,所有这些都可以正常工作 我在函数的开头定义了let u。在for循环中,一些child应该附加到该变量u。当我在循环完成后将u注入DOM时,不会显示任何子元素,但在循环中u会被操纵(正如控制台所说) 我想我无法在循环/if块内操作作用域为u的函数。。。但是,我从ES6中的let声明中了解到的是——它应该是有效的!?有人有主意吗?谢谢 背景:这是用babel将ES6代码转换成ES5,然后编译成运行在Windows 10/UWP上

我有一个在ES6中实现的函数。除了在循环中访问变量(函数作用域)之外,所有这些都可以正常工作

我在函数的开头定义了let u。在for循环中,一些child应该附加到该变量u。当我在循环完成后将u注入DOM时,不会显示任何子元素,但在循环中u会被操纵(正如控制台所说)

我想我无法在循环/if块内操作作用域为u的函数。。。但是,我从ES6中的let声明中了解到的是——它应该是有效的!?有人有主意吗?谢谢

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

导出函数buildSubNavigation(父级){
设u=$(“
    ”) .addClass(“subNavbarList”); for(让p进入window.pages){ if(window.pages[p]['parent']==parent){ 设i=$(“
  • ”) .addClass(“subNavbarItem”) .attr('id','subNavbarItem'+window.pages[p]['id'])) 。单击(函数(){ //绑定函数 //... }); //控制台打印正确的列表项 控制台日志(i); //控制台打印u,包括列表孩子 u、 附加(i); } } //注入页面 //没有列表子元素被注入DOM,只有UL元素 $('#subNavbar').html(u); //... }
事实证明,代码本身是干净的,没有产生错误。在通过npm重新安装模块后,解决了ES6 Babel代码翻译中的一些错误。

“但是,我从ES6中的let声明中理解的是,它应该可以工作!?”是的
var
let
const
都可以工作。JavaScript有词法范围,这在ES6中没有改变。谢谢。那这里有什么问题?我不知道。在我的稍加修改的版本中运行良好:。也许你没有发布的代码有问题。
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);
//...
}