[英]JavaScript stops loop execution after push to array
我有一个简单的脚本问题。 我有一个名为“FeatureFlag”的模型,它是一个参考父级和子级的树结构。 我还有一个名为 TreeBuilder 的对象,它从 FeatureFlag 元素列表中生成一棵树。
这是我的模型:
export class FeatureFlag {
private _id: number;
private _parent: FeatureFlag;
private _children: FeatureFlag[] = [];
set id(id:number) {
this._id = id
}
set parent(parent:FeatureFlag) {
this._parent = parent
}
get parent() : FeatureFlag {
return this._parent
}
set children(children:FeatureFlag[]) {
this._children = children
}
get children() : FeatureFlag[] {
return this._children
}
}
TreeBuilder 中有问题的方法 build():
public build() {
for(let element of this.data) { //this.data is an array of dict [{node,parent}]
let found = this.findNode(element.parent) //searches in tree for node with id 'element.parent'
if(found) { //if parent node has been found
//found.children.push(element.node) //add current node to its children
console.log(found) //print found
}
}
}
当线:
found.children.push(element.node)
被评论,控制台打印所有找到的父母。 没关系。 但是当行被取消注释时,console.log 只打印一次 - 第一个找到的父级。 为什么会这样?
问候
怪! 我会在推送之前放置调试器语句,然后逐步执行它,以确保它不会引发被静默捕获的错误。 还要确保children.push没有任何意外的副作用。
我怀疑children.push会以某种方式抛出,也许是因为未定义children,但是Angular吞没了错误。 另外,findNode是否确定返回FeatureFlag而不是其他东西?
我遇到了类似的问题:
var errors;
let imput_email = $('#loginEmail').val().toUpperCase();
if (!validateEmail(imput_email)){
$( "#loginEmail + .invalid-feedback" ).addClass( "d-block" );
console.log("I can see this in console");
errors.push("Kiwi");
console.log("NOTHING IN CONSOLE");
alert("ALERT NOT WORKING EITHER");
}
if (!validatePass(imput_pass)){ // this part was working before push
这里的工作只是初始化错误变量:
var errors= [];
我可以理解,如果数组为空并且它没有任何信息表明它是一个数组,那么它就是那些“无声错误”之一。 尽管延迟了 4 年,但希望它对某人有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.