腾讯web前端开发工程师笔试题及答案如何实现事件委托?首先要知道什么是事件委托。考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少遇到这么多li的情况),为每个li添加事件侦听就会对页面性能产生很大的影响。就像下面这段代码:<!DOCTYPEHTML><html><head><metacharset="utf-8"/><title>js性能优化</title></head><body> <ulid='list'><li>精通css</li><li>精通js</li><li>精通html</li>......</ul></body></html> <scripttype="text/javascript">(function(){vara=('list');varb=('li');for(vari=0;i<;i++){b[i].addEventListener('click',function(e){varc=; alert();},false);}})();</script>首先,我们来想下,产生性能问题的根本原因是什么呢?li元素(目标对象)所要进行的事件处理了。怎么可以解决这种囧况呢?答案就是采用事件委托,将在li对象上面要处理的事件委托给父元素或者祖先元素,即为父元素绑定事件侦听,看看下面的改进代码:<!DOCTYPEHTML><html><head><metacharset="utf-8"/><title>js性能优化</title></head><body> <ulid='list'><li>精通css</li><li>精通js</li><li>精通html</li>......</ul></body></html> <scripttype="text/javascript">(function(){vara=('list');('click',function(e){varb=; alert();},false);})();</script> 虽然现在很多框架都已经实现了事件委托,但是作为一个开发人员,用框架的同时我们也应该知道他实现的原理是如何的,知其然,更要知其所以然将10进制的数302转为二进制。十进制转二进制的原理是:用2辗转相除至结果为1将余数和最后的1从下向上倒序写就是结果例如302302/2=151余0151/2=75余175/2=37余137/2=18余118/2=9余09/2=4余14/2=2余02/2=1余0故二进制为100101110所以程序可以写成这样:vara=302;varstr="";while(a>1){ str=a%2+str; a=parseInt(a/2);}str=a+str;js中运算符的优先级(此非原题,为原理题)运算符描述.[]()字段访问、数组下标、函数调用以及表达式分组++---~!deletenewtyp
腾讯web前端开发工程师笔试题及答案 来自淘豆网www.taodocs.com转载请标明出处.