作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Google 的 Blockly 开展一个项目,但部分文档难以理解。有人可以帮助我理解以下 for 循环 (xml = allXml[i]) 的结束条件吗?
var allXml = Blockly.Xml.workspaceToDom(workspace);
var allCode = [];
for (var i = 0, xml; xml = allXml[i]; i++) {
var headless = new Blockly.Workspace();
Blockly.Xml.domToWorkspace(headless, xml);
allCode.push(Blockly.JavaScript.workspaceToCode(headless));
headless.dispose();
}
我想当 allXml[i] 未定义时循环将退出,但是您如何像这样遍历 XML 对象?它似乎总是返回 undefined 并完全跳过循环。
谢谢你的帮助
大多数函数的定义可以在 https://code.google.com/p/blockly/source/browse/trunk/core/xml.js?r=1614 找到
我从中提取的文档页面是 https://developers.google.com/blockly/custom-blocks/code-structure?hl=en
最佳答案
我在 github 的仓库中找不到这段代码,所以我猜这是文档中的一个较旧的示例。
但是如果你想看看 Blockly.Xml.workspaceToDom()
函数的实现,你会在那里看到非常相似的东西。
var blocks = workspace.getTopBlocks(true);
for (var i = 0, block; block = blocks[i]; i++) {
var element = Blockly.Xml.blockToDom_(block);
//...
xml.appendChild(element);
}
这里的想法是遍历所有代码分支。顶部 block 没有顶部连接(它开始一个新分支)。 getTopBlocks()
返回一个数组 {!Array.<!Blockly.Block>}
.
考虑到文档在有关并行执行的部分中显示了它,我认为这与以下事实有关,即您可以有更多未连接的代码分支......并且确切的实现只是随着时间的推移而改变。
关于javascript - Blockly 中不寻常的 JavaScript for 循环与 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34820589/
我是一名优秀的程序员,十分优秀!