var validCount = 0;

        var docFrag = document.createDocumentFragment();//文档碎片,减少回流和重绘

        for (var i = 0; i names.length; i += 1) {

            var flag1 = names[i][0].indexOf('A') !== 0;//第一位不是A的

            var getFullName;

            if (flag1 && names[i][0].length > 4) {

              getFullName = processName(names[i]).getFullName;

              var lastName = processName(names[i]).lastName;

              var firstName = processName(names[i]).firstName;

              var span = document.createElement('li');

              var textNode = document.createTextNode(i + 1 + '. ' + getFullName());

              span.appendChild(textNode);

              span.index = i;

              span.first = firstName;

              span.last = lastName;

              span.addEventListener('click', function (ev) {

                console.log('click on no.' + (ev.target.index+1) + ' ' + ev.target.first + ',' + ev.target.last);

              });

              if (validCount + 1 > maxLength) {

                break;//直接跳出循环

              }

              validCount += 1;

              docFrag.appendChild(span);

            }

          }

        list.appendChild(docFrag);


请教下第11题怎么写呢?

还有第12题我是这么改的代码,我觉得问题主要出在addEventListener是异步的,读的i肯定是循环完毕的i值,而不是每一次的i值,firstName和lastName也是同理。还有性能优化方面可以避免多次的回流重绘,可以使用文档碎片;以及跳出循环使用break就不要使用continue了,因为continue是只跳出这一次而break是停止整个循环。差不多我就想到这么几个。希望大家帮我多多指出不足~