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