if(childrens are present) {

   while(childrens.length ! ==0) {

            do something

    }
}

// Execute this function fnName()


我的问题是,while条件正在执行,但是当长度变为零时,它不会出现...并执行fnName()

最佳答案

如果您实际上是在循环中从数组中删除子级,那应该没问题,除了运算符上的间距有误之外;它应该是!==,而不是! ==

while(childrens.length !== 0) {


请注意,要从数组中实际删除子级,必须使用数组更改器方法之一,例如popsplice。我的猜测是您没有这样做。

更为普通的做法是遍历数组而不对其进行更改:

var index, len, child;

for (index = 0, len = childrens.length; index < len; ++index) {
    child = childrens[index];
    // Use `child` for each child
}


或使用诸如forEach之类的新ES5内容(这需要知道您的用户将拥有最新的浏览器,或者包含“ ES5填充程序”,因为forEach是可以填充的内容之一):

childrens.forEach(function(child) {
    // Use `child` for each child
});




注意:“ children”一词已经是复数形式(单数形式为“ child”),因此末尾没有“ s”。仅英语的不规则复数之一(有多个)。

07-25 21:55